我正在努力解决无法在主机上访问来宾创建的文件的权限问题。
设置:
我有一个 Ubuntu 20.04 主机和一个通过 KVM 运行的 Ubuntu 20.04 来宾。我在映射模式下有一个共享安装设置。主机目录/home/user/VMs/shared/syncthing/
可通过来宾 vm 访问/hostmount
。我正在使用sudo mount -t 9p -o trans=virtio,version=9p2000.L /hostmount /hostmount
. 来宾 VM 使用普通帐户下的 virt-manager 启动user
。
当前状态:
- 主机可以在共享中创建文件,来宾可以读取和修改。
- 来宾可以在共享中创建文件,但主机用户不能读取或修改它们。
如果我以touch /hostmount/test.file
普通用户身份从来宾内部访问,则user
在主机端我会看到以下权限ls –l test.file
:
-rw------- 1 libvirt-qemu kvm 0 Feb 4 02:51 /home/user/VMs/shared/syncthing/test.file
期望状态:
当然,我可以chown
在创建文件后创建文件,但我该怎么做:
- 强制来宾 VM
user
在主机上创建文件 - 授予
user
主机访问由来宾 vm(libvirt-qemu
在主机上)创建的文件的权限
我已经尝试过这个答案的建议。它们适用于预先存在的文件,但不适用于来宾创建新文件时。
尽管我猜测存在更优雅的解决方案,但我在这篇相关文章中找到了解决此问题的方法。如果您从命令行运行您的虚拟机,您只需将
fmode
和dmode
选项添加到命令中。例如:--filesystem "/path/to/share","sharename",mode=mapped,fmode='0777',dmode='0777'
。这将使目录世界可写。如果您使用 libvirt xml 或 virt-manager,您可以删除现有的共享文件夹并在
<domain>
. 请注意,您可能需要调整其中一些参数,我不知道它们都做了什么。如果您像我一样使用 Ubuntu,您还需要编辑您的
/etc/apparmor.d/abstractions/libvirt-qemu
并将该行添加/path/to/share/{,**} rw,
到它的末尾。这将授予所有来宾访问此路径的权限。