Kvm

如何將文件儲存在已掛載的共享文件夾中?

  • January 28, 2016

我在 Ubuntu 主機上執行 Fedora Workstation 虛擬機。

/home/cl/share在來賓中創建了一個文件夾,並按照linux-kvm/media/cl/system/virtual/share的說明將共享文件夾安裝為 root :

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/clsudo 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

我可以在我的系統上重現該問題。

您的主要問題是主機的 ACL 限制。

為此,更改libvirt-qemu使用者的 ACL 屬性:

sudo setfacl -R -m u:libvirt-qemu:rwx /media/cl

Mode將設置Filesystem /host 從更改PassthroughMapped


為什麼?這就是為什麼:

您的訪客系統以libvirt-qemu使用者身份執行,並且您的 ACL 設置限制了該使用者的權限。

user:libvirt-qemu:--x

的正確輸出getfacl應該是:

user:libvirt-qemu:rwx

引用自:https://unix.stackexchange.com/questions/257372