マウントされた共有フォルダにファイルを保存する方法は?

マウントされた共有フォルダにファイルを保存する方法は?

UbuntuホストでFedora Workstation仮想マシンを実行しています。ゲストにフォルダを作成し、
以下の手順に従って共有フォルダをルートとしてマウントしました。/home/cl/share/media/cl/system/virtual/shareLinux-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 Desktop 64ビット
  • ゲストオペレーティングシステム:Fedora 23 Workstation 64ビット
  • 仮想化ソフトウェア:qemu qemu-kvm virt-manager
  • ホストシステムの場所:最初の内部SSD - ext4形式
  • 仮想ストレージの場所:2番目の内蔵ハードドライブ - NTFSフォーマット
  • 共有フォルダの場所:2番目の内蔵ハードドライブ - 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

答え1

私のシステムで問題を再現できます。
主な問題は、ホストのACLの制限です。
これを行うには、ユーザーのACL属性を変更しますlibvirt-qemu

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

答え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ファイルマネージャを使用しても可能です。

関連情報