您尚未登录。

#1 2018-11-23 14:22:26

驿窗
YCP
注册时间: 2016-06-03
帖子: 619

(已解决)一个权限问题

我会把虚拟机.qcow2文件cp到 /dev/shm里,然后启动虚拟机,让虚拟机在内存中运行;

执行cp命令时,我用的是user权限,所以,此时/dev/shm/目录中的qcow2文件是user拥有;

虚拟机运行以后,qcow2文件权限会变成644,所有者和组会变成root;这是正常的,因为我用的前端是virt-manager,它会把qcow2所有者变成root账户;

然后问题出现了:我如果想删除这个qcow2文件,就必须使用root权限;

我希望的是,仅使用user权限就删除这个文件 ? 除了sudo;

我自己琢磨了一下,好像这不太可能,因为文件是644,所有者和所属组都是root,没道理user权限可以删除,这推理对么?

或者,我在想,有没有一个方法,让user仅对 /dev/shm/目录下的文件拥有root权限?这听起来好像不太安全~

最近编辑记录 驿窗 (2018-11-23 22:14:53)

离线

#2 2018-11-23 14:47:03

nopriler
会员
注册时间: 2012-01-03
帖子: 393

Re: (已解决)一个权限问题

能不能删文件看的是文件夹的权限

离线

#3 2018-11-23 17:58:17

驿窗
YCP
注册时间: 2016-06-03
帖子: 619

Re: (已解决)一个权限问题

文件夹?

我使用user权限cp文件到/dev/shm目录的,如果没有启动虚拟机,我用user身份可以删除/dev/shm目录里的这个文件;

但如果虚拟机启动过,文件所有者就会变成root,而不是user,组也一样,mod是644;这时,我就无法用user权限来删除/dev/shm目录里的qcow2文件;

如果此时我用user权限cp其它文件到/dev/shm/目录,这个新cp到/dev/shm目录的文件,可以用user权限随意编辑或删除,不需要root权限;

所以,我想对于/dev/shm这个目录,user的权限应该已经足够了---读写执行三个都有;

唯一的问题是virt-manager的动作;virt-manager启动虚拟机的动作,相当于是root用户修改了这个qcow2文件的权限,使这个文件只有root可以修改/删除,user就只有读权限,不能修改/删除;而/dev/shm目录的权限,并没有变化;

而我却恰恰需要使用user权限去删除/dev/shm/这个目录里的qcow2文件~

--------

我bing过一些资料,这其实是virt-manager管理虚拟机的方式,源于qemu:

它有两种方式,一个是qemu:///system(root权限管理虚拟机),另一个是qemu:///session(user权限管理虚拟机);
上面我说的文件所有权被修改为root的情况,实际上是在qemu:///system(root权限管理虚拟机)的情况下出现的;

如果我用qemu:///session(user权限管理虚拟机),则qcow2会一直保持user有可以读写执行权限的状态;不会变成root专有;
但麻烦的是,qemu:///session(user权限管理虚拟机)情况下,虚拟机的网络功能有很多是有限制的,所以我基本上不会使用qemu:///session,而是经常使用qemu:///system(root权限管理虚拟机);

而qemu:///system(root权限管理虚拟机)带来的问题就是,qcow2文件被改成root专有的了;

头疼~

最近编辑记录 驿窗 (2018-11-23 18:16:33)

离线

#4 2018-11-23 18:20:49

驿窗
YCP
注册时间: 2016-06-03
帖子: 619

Re: (已解决)一个权限问题

大家是不是都不用kvm,都在用virtualBox?

离线

#5 2018-11-23 19:19:51

依云
a.k.a. 百合仙子
所在地: 一个等待妹纸出现的地方
注册时间: 2011-08-21
帖子: 5,073
个人网站

Re: (已解决)一个权限问题

/dev/shm 和 /tmp、/var/tmp,带 t 权限位的。你可以在自己家里 mount 一个 tmpfs 自己用,比如我的:

tmpfs                   /home/lilydjwg/tmpfs    tmpfs   size=512m,uid=lilydjwg,gid=lilydjwg,mode=0750   0 0

离线

#6 2018-11-23 22:11:54

驿窗
YCP
注册时间: 2016-06-03
帖子: 619

Re: (已解决)一个权限问题

哈哈,仙子,你的办法管用,好开心 big_smile big_smile big_smile

我添加了一个虚拟机的存储池,放在/home/peter/tmpfs;
然后把以前cp 到/dev/shm/目录的qcow2文件,改成cp 到/home/peter/tmpfs;

之后我用qemu:///system方式启动虚拟机,启动以后,我在/home/peter/tmpfs目录执行 ls -ahl,显示的qcow2文件所属用户和组,都变成了libvirt-qemu(之前都是root);然后我用user权限删除,果然一下就删除了,不需要提供root权限~

ps:不过如果想要虚拟机能运行,tmpfs目录需要设置为0755;0750的话,libvirt-qeum组无法读取里面的文件;

太感谢仙子了,这问题困扰我快一年了,我是一直将就着用的;
没有系统的学过linux,我这二把刀的苦楚啊...终于又解脱了一点~


@nopriler,
你说的有道理,我的这个删除权限问题还是要从目录权限上找,多谢~


---------
ps:我先是搜索了一大堆关于t 权限的文章,看了几篇之后才明白,不是需要我设置t权限,而是注意/dev/shm/有t 权限,我要做的,是避开这个t权限;

最近编辑记录 驿窗 (2018-11-24 11:06:16)

离线

页脚