我正在使用 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.log
AVC 拒绝的可能原因
搜索今天的 AVC 否认
/sbin/ausearch -m avc -ts today
或者检查/var/log/messages
它会告诉您 AVC 拒绝的唯一标识符,该标识符需要作为参数运行sealert -l
示例:sealert -l 84e0b04d-d0ad-4347-8317-22e74f6cd020
你必须仔细阅读这些信息。它告诉您需要执行的命令来克服 AVC 拒绝。