问题
我很难在来宾内部配置具有写入权限的共享文件夹。我的特殊情况是共享文件夹引用主机上安装的 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_mode
从dir_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
什么有效
主机可以
/media/nas/temp
使用 user进行写入dave
。从来宾内部,我可以通过 CIFS 直接成功挂载(相同的凭据) - 但这在我当前的环境中是不可能的。
我还可以安装本地主机文件夹(例如
/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
经过更多调查后,这对我有用。重要要点:
- 将安装模式设置为 Squash - 既不是直通也不是映射。
- 将挂载点所有者设置为 libvirt-qemu,并将组设置为 dave(来宾中使用的用户/uid)。
- 在挂载 CIFS 选项中设置
file_mode=0755
。dir_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 来说是可写的,该用户的组被设置为所属组(标准为只读)。