QEMU/KVM:如何为来宾配置可写共享文件夹,该文件夹本身是主机上安装的 CIFS 网络共享?

QEMU/KVM:如何为来宾配置可写共享文件夹,该文件夹本身是主机上安装的 CIFS 网络共享?

问题

我很难在来宾内部配置具有写入权限的共享文件夹。我的特殊情况是共享文件夹引用主机上安装的 CIFS 网络共享。

主机配置

网络共享(和共享文件夹)/media/nas/temp通过安装

sudo mount -t cifs -o username=dave,vers=3.0,uid=dave,gid=libvirt-qemu //nas/temp /media/nas/temp

虚拟管理器配置:

在此输入图像描述

从主机角度的权限:

dave@host:~$ ll /media/nas/
drwxr-xr-x 2 dave        libvirt-qemu    0 Dez  6 15:36 temp/

访客配置

/temp/media/nas/temp在主机上)通过以下方式安装:

sudo mount -t 9p -o trans=virtio,version=9p2000.L /temp /media/temp

libvirt-qemu访客角度的权限(64055是主机组的uid ):

dave@guest:~$ ll /media
drwxr-xr-x  2 dave 64055    0 dec  6 15:36 temp/

问题

创建新文件等写入操作会触发以下错误:

dave@guest:~$ touch /media/temp/myfile.log
touch: cannot touch '/media/temp/myfile.log': Permission denied

我还尝试file_modedir_mode主机安装选项:

sudo mount -t cifs -o username=dave,vers=3.0,uid=dave,gid=libvirt-qemu,\
  file_mode=0777,dir_mode=0777 //nas/temp /media/nas/temp

从主机角度看新权限:

dave@host:~$ ll /media/nas
drwxrwxrwx 2 dave        libvirt-qemu    0 Dez  6 15:36 temp/

奇怪的是,现在我得到了一个不同的错误:

dave@guest:~$ touch /media/temp/myfile.log
touch: cannot touch '/media/temp/myfile.log': Operation not supported

什么有效

  1. 主机可以/media/nas/temp使用 user进行写入dave

  2. 从来宾内部,我可以通过 CIFS 直接成功挂载(相同的凭据) - 但这在我当前的环境中是不可能的。

  3. 我还可以安装本地主机文件夹(例如/home/dave/Downloads/qemu-test,具有完全相同的权限,并写入它。在这种情况下的权限是:

dave@host:~$ ll ~/Downloads/
drwxrwx---+  2 dave libvirt-qemu    4096 Dez  6 17:25 qemu-test/

问题

如果我想通过共享网络或本地文件夹,为什么会有所不同mount -t 9p?如图所示,权限应该相同,对于来宾来说,共享哪种挂载点并不重要(?)。

有没有人设法编写一个从主机安装为网络共享的共享文件夹(如果是,如何)?

有关的

类似的帖子,是关于共享本地文件夹的:

答案1

经过更多调查后,这对我有用。重要要点:

  1. 将安装模式设置为 Squash - 既不是直通也不是映射。
  2. 将挂载点所有者设置为 libvirt-qemu,并将组设置为 dave(来宾中使用的用户/uid)。
  3. 在挂载 CIFS 选项中设置file_mode=0755dir_mode=0755

挂载示例(主机):

sudo mount -t cifs -o username=dave,vers=3.11,uid=libvirt-qemu,gid=dave,file_mode=0775,dir_mode=0775 //nas/temp /media/nas/temp

Ad 1.:在其他模式下,我遇到了类似的错误

touch: xxx 设置次数: 无该文件或目录

touch:无法触摸“/media/temp/myfile.log”:不支持操作

Ad 2.:将 libvirt-qemu 设置为组不够,导致“权限被拒绝”错误。在这个问题中,我反其道而行之。确保为来宾选择正确的 UID - 例如,为主机和来宾上的 dave 设置相同的 UID。注意:QEMU/KVM 虚拟机以 libvirt-qemu 用户身份运行。

Ad 3.:这些选项使挂载点对于用户 dave 来说是可写的,该用户的组被设置为所属组(标准为只读)。

相关内容