我正在尝试使用 9p 协议为在用户会话上运行的 kvm/qemu VM 设置共享文件夹(因此 qemu 进程以我的身份运行,而不是以 root 身份运行)。在客户机中挂载共享文件夹工作正常,我可以看到和读取所有文件,但无法创建新文件或更改现有文件。这只会导致“权限被拒绝”,就好像我没有文件的写入权限一样,尽管ls -l
客户机确认我应该有。
我知道这是主机上的 SELinux 标签问题。当我使用 将 SELinux 设置为宽容模式时setenforce 0
,创建和更改文件工作正常。我还发现我需要为主机上的共享文件夹设置适当的标签。我无法弄清楚正确的标签是什么。我似乎错过了正确的标签,而且我也相信 MCS 在这里发挥了作用。
我目前拥有的:
[root@host]# semanage fcontext -l |grep simon
/home/simon/Documents/shared_folder(/.*)? all files unconfined_u:object_r:virt_content_t:s0
以下是 qemu 进程的内容:
[simon@host]$ ps -elfyZ|grep qemu
unconfined_u:unconfined_r:svirt_t:s0:c317,c827 S simon 12347 3560 1 80 0 552552 2413575 - 10:11 ? 00:00:15 /usr/bin/qemu-system-x86_64 -name guest=debian10-dev_default... (lots of flags)
关于客人我有:
vagrant@debian-10:/vagrant$ whoami
vagrant
vagrant@debian-10:/vagrant$ ls -la /vagrant
total 24
drwxrwxr-x 3 vagrant vagrant 4096 Feb 13 09:12 .
drwxr-xr-x 20 root root 4096 Jan 31 19:26 ..
drwxrwxr-x 4 vagrant vagrant 4096 Jan 22 16:20 .vagrant
-rw-rw-r-- 1 vagrant vagrant 1186 Feb 13 09:10 Vagrantfile
vagrant@debian-10:/vagrant$ mount | grep 9p
4ef5af6232a6a6d0dbdc1b2b9199253 on /vagrant type 9p (rw,relatime,sync,dirsync,access=1000,trans=virtio)
用户 ID 1000 是主机上 simon 的用户 ID。主机运行 Fedora Workstation 32,客户机运行 Debian 10。
任何帮助是极大的赞赏!