我正在 Ubuntu 主机上运行 Fedora Workstation 虚拟机。
我/home/cl/share
在来宾中创建了一个文件夹,并/media/cl/system/virtual/share
按照以下说明以 root身份安装了共享文件夹linux-kvm:
mount -t 9p -o trans=virtio,version=9p2000.L /host /home/cl/share
我可以从共享文件夹访问(读取)文件和文件夹,但无法写入它们。
一个例子:我正在尝试将文件保存mount-share.txt
到文件夹/home/cl/share
.
两个文件夹(主机和来宾)都具有读写权限,但我收到错误
Error opening file '/home/cl/share/mount-share.txt': Operation not permitted.
- 主机操作系统:Ubuntu 15.10桌面64位
- 来宾操作系统:Fedora 23 工作站 64 位
- 虚拟化软件:
qemu
qemu-kvm
virt-manager
- 主机系统位置:第一个内置SSD - ext4格式
- 虚拟存储位置:第二个内置硬盘 - NTFS 格式
- 共享文件夹位置:第二个内置硬盘 - NTFS 格式
如何在来宾和主机之间共享目录并允许来宾读写访问?
sudo chmod a+x /media/cl
并sudo chmod -R 777 /media
没有改变现状。
访客系统:
ls -la /home/cl/share
total 16
drwxrwxrwx. 1 cl cl 4096 20. Jan 14:41 .
drwx------. 18 cl cl 4096 24. Jan 19:11 ..
drwxrwxrwx. 1 cl cl 4096 17. Dez 09:49 fedora
drwxrwxrwx. 1 cl cl 0 5. Jan 11:43 solus
drwxrwxrwx. 1 cl cl 0 6. Jan 12:10 ubuntu
drwxrwxrwx. 1 cl cl 4096 24. Jan 16:58 various
stat /home/cl/share
File: ‘/home/cl/share’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 25h/37d Inode: 135 Links: 1
Access: (0777/drwxrwxrwx) Uid: ( 1000/ cl) Gid: ( 1000/ cl)
Access: 2016-01-27 10:11:12.566303000 +0100
Modify: 2016-01-26 21:34:48.647707300 +0100
Change: 2016-01-26 21:34:48.647707300 +0100
Birth: -
主机系统:
ls -ld /media /media/cl/ /media/cl/system /media/cl/system/virtual/ /media/cl/system/virtual/share
drwxr-xr-x 3 root root 4096 Okt 22 16:06 /media
drwxr-x---+ 6 root root 4096 Jan 24 10:49 /media/cl/
drwxrwxrwx 1 cl cl 4096 Jan 19 15:28 /media/cl/system
drwxrwxrwx 1 cl cl 4096 Jan 22 13:43 /media/cl/system/virtual/
drwxrwxrwx 1 cl cl 4096 Jan 20 14:41 /media/cl/system/virtual/share
getfacl /media/cl/
getfacl: Removing leading '/' from absolute path names
# file: media/cl/
# owner: root
# group: root
user::rwx
user:libvirt-qemu:--x
user:cl:r-x
group::---
mask::r-x
other::---
ps aux | grep virt
root 988 0.0 0.2 1207024 39888 ? Ssl 12:48 0:01 /usr/sbin/libvirtd
libvirt+ 1204 0.0 0.0 45268 2720 ? S 12:48 0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
root 1207 0.0 0.0 45240 368 ? S 12:48 0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
cl 4204 0.0 0.0 15184 2532 pts/2 S+ 14:06 0:00 grep --color=auto virt
答案1
我可以在我的系统上重现该问题。
您的主要问题是主机的 ACL 限制。
为此,更改用户的 ACL 属性libvirt-qemu
:
sudo setfacl -R -m u:libvirt-qemu:rwx /media/cl
将Mode设置从Filesystem /host 更改Passthrough
为Mapped
。
为什么?原因如下:
您的来宾系统以libvirt-qemu
用户身份运行,并且您的 ACL 设置限制了该用户的权限。
user:libvirt-qemu:--x
正确的输出getfacl
应该是:
user:libvirt-qemu:rwx
答案2
如果您的主要目标只是来回共享文件,并且您愿意使用 TCP,则可以通过 ssh 或类似方式共享文件。
例如,如果您将本地端口重定向到来宾上的合理端口,您应该能够使用该端口进行访问。我使用 SSH/SCP。
启动我的虚拟机时:
qemu-kvm [all your usual qemu options] -net nic -net user -redir tcp:22122::22
然后为了访问虚拟机,我使用 SSH;我在主机上打开一个终端:
scp -P22122 myfile.txt klaatu@localhost:~/ssh-share-dir
fish
或者sshfs
在您使用的任何 GUI 文件管理器中也可以,只要您设置端口即可。