我的目标是为KVM来宾设置对9p共享的完全写入权限。主机和来宾都具有相同ID的相同用户/组。主机和来宾都应该能够使用相同的用户名写入共享,并且我不想区分文件是由主机还是来宾编写的。该KVM进程以root权限运行- I组user
和group
以root
在/etc/libvirt/qemu.conf。
在主机上的来宾定义中,共享定义如下:
<filesystem type='mount' accessmode='passthrough'>
<source dir='/mnt/storage/data'/>
<target dir='data'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</filesystem>
在来宾中,共享安装为:
mount -t 9p -o rw,trans=virtio,version=9p2000.L,msize=262144 data /mnt/data
问题是来宾中的root用户无法写入主机上非root用户拥有的文件/文件夹。更奇怪的是,来宾的根可以重命名和删除此类文件。也就是说,当我在主机上以非root用户身份创建文件时,即使可以重命名和删除它,也无法将其编辑为guest虚拟机的root用户!
我还发现,在非root用户下在主机上创建的文件夹的权限设置为777时,guest虚拟机的root可以对其进行写入(即在其中创建文件)。但是,这不适用于文件-无论权限如何,它们仍然无法编辑。
主机和来宾都运行Linux服务器3.2.0-4-amd64#1 SMP Debian 3.2.51-1 x86_64 GNU / Linux。在Debian中,默认情况下SELinux被禁用,而我没有启用它。我尝试了所有三个可用9P访问模式(passthrough
,mapped
和squash
) -没有区别。
我只是想知道是否有什么我可以调整以使其正常工作,还是只是一个错误?
请注意,这里报告了类似的问题:使用libvirt / qemu对直通(9p)文件系统进行读/写访问?但是与那种情况不同,我拥有100%的写访问权限,其中文件由root拥有,它只是非root用户文件,我什至无法在guest虚拟机上以root用户身份写入。