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)设置了默认文件上下文,第二个命令告诉 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 拒绝。

相关内容