我用的是Fedora 17和KVM,虚拟机运行得很好。我就尝试访问主机系统上的一个文件,但SELinux阻止虚拟化访问除了/var/lib/libvirt/images里的其他文件。当在共享路径上宿主的虚拟机运行时,主机给出以下信息:SELinux is preventing /usr/bin/qemu-kvm from read access on the directory share。
专题推荐:SELinux:linux内核的安全保镖
这时我该怎么办?我虚拟机的目的是在多个Linux版本上测试二进制,所以共享路径是最简单的。有办法让/tmp/共享让每个人都可用吗?
Sander van Vugt:除了/var/lib/libvirt/images,你无法在路径中共享虚拟机的原因在于SELinux。SELinux为系统添加了额外保护。通过在目录上使用标签,将目录设置为专有用途。存储镜像文件的***方式是通过在目录上设置合适的类型标签。你这样的情形,运行下面两个命令即可(请确保在根shell下执行):
semanage --t --a virt_image_t /tmp/share(/.*) ? restorecon --R --v /tmp/share
如果还不行,可完全禁用SELinux。可通过将下面这行添加都文件/etc/sysconfig/selinux中:
SELINUX=disabled
如果没时间重启计算机,可使用setenforce 0暂时禁用SELinux,当不要忘记更改上面的配置文件,否则在你重启时又会自动开启SELinux。
接下来,你说想要每个人都能访问/tmp/share的内容。最简单的方式是创建NFS共享,请确保文件/etc/exports包含以下行:
/tmp/share *(rw,no_root_squash)
然后,使用命令service nfs启动NFS服务器。对于其他计算机,现在可加载NFS共享,使用下面命令即可:
mount --t nfs your.fedora.computer:/tmp/share/mnt
大功告成,访问/mnt目录即可访问NFS共享的内容,也可从这访问镜像文件。