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.
- ホストオペレーティングシステム: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/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ファイルマネージャを使用しても可能です。