SELinuxはKVMを使用してホスト/ゲストファイルの共有を妨げます。

SELinuxはKVMを使用してホスト/ゲストファイルの共有を妨げます。

KVMを使用してFedora 17を実行しており、仮想マシンが正しく実行されています。追いかけようとするこれホストシステムのファイルにアクセスしますが、SELinuxはVMアクセスをブロックします/var/lib/libvirt/images。これは、ls共有パスの仮想マシン内で実行されたときにホストによって発行されるメッセージです。

SELinux is preventing /usr/bin/qemu-kvm from read access on the
directory share.

この問題をどのように解決できますか?私の仮想マシンの目的は、複数のLinuxディストリビューションでバイナリをテストすることであるため、共有パスが最も簡単です。誰もが/tmp/shareへのフルアクセスを許可する方法はありますか?

答え1

qemuへのアクセスを試みるパスを提供していないターゲット共有には svirt_image_tセキュリティコンテキストが必要です(実行して確認できますls -ldZ <pathToDestination>)。これが異なるとマークされている場合、SELinuxはkvmがそのディレクトリからの読み書きを許可しません。

回避策は次のことです(<pathToDestination>を実際のパスに置き換えます)。

semanage fcontext -a -t svirt_image_t "/<pathToDestination>(/.*)?"
restorecon -vR <pathToDestination>

上記のコマンドはpathToDestinationの下のすべてのエントリ(pathToDestinationを含む)のデフォルトのファイルコンテキストを設定し、2番目のコマンドはSELinuxにそのディレクトリの下のすべてのエントリのファイルコンテキストをデフォルト値(つまり意味的に変更されたコンテンツ)に復元します。指示します。

/var/log/audit/audit.logAVC拒否の理由も確認できます。

今日のAVC拒否を検索 /sbin/ausearch -m avc -ts today

または/var/log/messages、これを確認すると、引数として実行する必要があるAVCによって拒否された一意の識別子がわかります。sealert -l

例: sealert -l 84e0b04d-d0ad-4347-8317-22e74f6cd020

この情報を注意深く読んでください。 AVC 拒否を克服するために実行する必要があるコマンドを通知します。

関連情報