質問: libvirt経由でvmとフォルダーを共有しています、9p、許可が拒否されました ubuntu server 14.04ホストは、libvirt/qemu-kvmを介してubuntu server 14.04ゲストをホストします。システムは正常に動作しますが、-ゲストとして-共有フォルダー(<filesystem>)への書き込みで問題が発生します。両方のマシンは相対的なバニラのインストールです。私はこのように指定されたフォルダを添付しました:[host] $ virsh edit guest-vm-name # ... <filesystem type='mount' accessmode='mapped'> <source dir='/data'/> <target dir='/data'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </filesystem> # ... ゲストから、次のようにファイルシステムをマウントします。[guest] $ sudo -u www-data mkdir /tmp/mnt [guest] $ sudo mount -t 9p -otrans=virtio,rw,version=9p2000.l /data /tmp/mnt www-dataユーザーを使用します。これは後で有効なユーザーになるため、p9を使用する場合はグループidとユーザーidが一致する必要があります。また、ホストでは、/ data(ext4パーティション、raid btwのlvm)は次のようになります[host] $ ls -lha /data [host] $ drwxrwxr-x 4 www-data www-data 4.0k nov 11 08:34 . [host] $ drwxr-xr-x 24 root root 4.0k nov 7 16:58 .. [host] $ drwxr-xr-x 2 www-data www-data 4.0k nov 11 08:34 jail # ... ゲストで、共有ファイルシステム上の何かに書き込もうとすると、使用中のユーザーに関係なく、アクセス権エラーが発生します。[guest] $ sudo -u www-data touch /tmp/mnt/jail/letmeout touch: cannot touch ‘/tmp/mnt/jail/letmeout’: permission denied でもファイルは読めます[guest] $ cat /tmp/mnt/jail/throughthewindow great weather! いろいろなことを試しましたが、特に: apparmorサービスを停止し、aa-complainを呼び出しました(効果的だったと思います) /etc/libvirt/qemu.confでセキュリティをnoneに設定します /etc/libvirt/qemu.confでrootにユーザーとグループを設定します / var/log/syslogおよびdmesgには、疑わしいものは何も表示されません。ポインター?!ありがとう。
回答: 私はこれが古いスレッドであることを知っていますが、同様の問題に出くわし、動作する解決策を見つけました少なくとも部分的に。また、/etc/libvirt/qemu.confのユーザーとグループの値をrootに変更しました。 ただし、dynamic_ownership設定も変更しました、説明が有望に聞こえたため: #libvirtがファイルの所有権を動的に変更するかどうか #は、上記の構成済みユーザー/グループと一致します。デフォルトは1です。 #0に設定すると、ファイル所有権の変更が無効になります。 私のセットアップは次のとおりです。 ホスト:debian 8(ジェシー) ゲスト:debian 8(ジェシー) ホスト上の共有フォルダーはrootに属します id 1000のローカルユーザーは、グループlibvirtのメンバーです(重要な場合があります) ゲストのマウントポイント(/mnt/data)はユーザー1000( "alexander")に属します both root(0)およびalexander(1000)を使用して、マウントされた共有フォルダーにファイルを最終的に書き込むことができます。 (私がそれをする前に、ここでファイルを書くことができるのはルートだけでした)「dynamic_ownership」を0に設定すると、「マップされた」アクセスモードで実行する必要があります。ここに私のセットアップに関するいくつかの情報があります:/etc/libvirt/qemu.conf:user = "root" group = "root" dynamic_ownership = 0 ファイルシステム(virsh編集):<!-- ... --> <filesystem type='mount' accessmode='mapped'> <source dir='/share/vm.localdomain/owncloud_data'/> <target dir='/data'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/> </filesystem> <!-- ... --> ホスト:ls -al /share/vm.localdomain/owncloud_data/ total 8 drwxr-xr-x 2 root root 4096 sep 8 00:15 . drwxr-xr-x 7 root root 4096 sep 8 00:10 .. ゲストのfstab:/data /mnt/data/ 9p trans=virtio 0 0 ゲスト:root@debian:~# cd /mnt/data root@debian:/mnt/data# touch touched_by_root root@debian:/mnt/data# su - alexander alexander@debian:~$ cd /mnt/data alexander@debian:/mnt/data$ touch touched_by_user alexander@debian:/mnt/data$ ls -al total 16 drwxr-xr-x 2 alexander alexander 4096 sep 8 00:30 . drwxr-xr-x 6 root root 4096 sep 7 18:13 .. -rw-r--r-- 1 root root 0 sep 8 00:30 touched_by_root -rw-r--r-- 1 alexander alexander 0 sep 8 00:30 touched_by_user ホストに戻る:root@host /share/vm.localdomain # ls -al /share/vm.localdomain/owncloud_data/ total 16 drwxr-xr-x 2 root root 4096 sep 8 00:30 . drwxr-xr-x 7 root root 4096 sep 8 00:10 .. -rw------- 1 root libvirt-qemu 0 sep 8 00:30 touched_by_root -rw------- 1 root libvirt-qemu 0 sep 8 00:30 touched_by_user 結論奇妙なことに、ゲストではこれら2つのファイルは異なるユーザー(rootとalexander)に属しますが、ホストでは両方のファイルが同じユーザー(root:libvirt-qemu)に属します。 :-o 正確にはわかりませんこの魔法の仕組みですが、明らかにそうです。お役に立てれば、 アレクサンダー