UbuntuホストでFedora Workstation仮想マシンを実行しています。
ゲストにフォルダー/home/cl/share
を作成し、共有フォルダー/media/cl/system/virtual/share
をルートとしてマウントしました 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.
qemu
qemu-kvm
virt-manager
ゲストとホストの間でディレクトリを共有し、ゲストに読み取り/書き込みアクセスを許可するにはどうすればよいですか?
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
システムで問題を再現できました。
主な問題は、ホストのACL制限です。
このため、libvirt-qemu
ユーザーのACL属性を変更します。
Sudo setfacl -R -m u:libvirt-qemu:rwx /media/cl
変更 Mode の設定 Filesystem /HostPassthrough
からMapped
へ。
なぜ?それが理由です:
ゲストシステムはlibvirt-qemu
ユーザーとして実行され、ACL設定はこのユーザーの権限を制限します。
user:libvirt-qemu:--x
getfacl
の正しい出力は次のようになります。
user:libvirt-qemu:rwx
主な目的が単にファイルをやり取りすることであり、TCPを使用することを受け入れる場合は、sshまたは同様の方法でファイルを共有するだけです。
たとえば、ローカルポートをゲストの適切なポートにリダイレクトすると、そのポートをアクセスに使用できるはずです。 SSH/SCPを使用しています。
VMを起動するとき:
qemu-kvm [all your usual qemu options] -net nic -Net User -redir tcp:22122::22
そして、VMにアクセスするには、SSHを使用します。ホストマシンでターミナルを開きます。
scp -P22122 myfile.txt klaatu@localhost:~/ssh-share-dir
fish
またはsshfs
は、ポートを設定する限り、使用するGUIファイルマネージャーで同様に機能します。