如何解決SELinux阻止虛擬機訪問文件?
我用的是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共享的內容,也可從這訪問鏡像文件。