KVM 来宾无法写入非 root 用户拥有的 9p 共享

Gre*_*ake 17 permissions qemu kvm-virtualization 9p

我的目标是为 KVM 来宾设置对 9p 共享的完全写入访问权限。主机和来宾都具有相同 ID 的相同用户/组。主机和来宾都应该能够使用相同的用户名写入共享,我不想区分文件是由主机写入还是由来宾写入。kvm 进程以 root 身份运行——我在 /etc/libvirt/qemu.conf 中设置了usergroupto root

在主机上的guest定义中,共享定义如下:

<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>
Run Code Online (Sandbox Code Playgroud)

在来宾中,共享安装为:

mount -t 9p -o rw,trans=virtio,version=9p2000.L,msize=262144 data /mnt/data
Run Code Online (Sandbox Code Playgroud)

问题是来宾中的 root 用户无法写入主机上非 root 用户拥有的文件/文件夹。更奇怪的是,guest 的 root 可以重命名和删除此类文件。也就是说,当我在主机上以非 root 用户身份创建文件时,即使我可以重命名和删除它,我也无法以访客的 root 用户身份编辑它!

我还发现,在主机上以非 root 用户创建的文件夹的权限设置为 777,来宾的 root 可以写入(即在其中创建文件)。但是,这不适用于文件 - 无论权限如何,它们仍然无法编辑。

主机和来宾都运行 Linux 服务器 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 GNU/Linux。在 Debian 中,SELinux 默认是禁用的,我没有启用它。我尝试了所有三种可用的 9p 访问模式(passthroughmappedsquash)——没有区别。

只是想知道是否有什么我可以调整以使其正常工作,还是只是一个错误?

请注意,这里报告了一个类似的问题:Read/write access for passthrough (9p) filesystems with libvirt/qemu? 但与这种情况不同的是,我拥有 100% 的写入权限,其中文件由 root 拥有,这只是非 root 用户文件,即使是来宾的 root 也无法写入。

小智 0

您可以检查文件系统的附加属性,例如共享目录上的 acl 吗?我怀疑权限问题。