如何解決SELinux阻止虛擬機(jī)訪問文件?
我用的是Fedora 17和KVM,虛擬機(jī)運(yùn)行得很好。我就嘗試訪問主機(jī)系統(tǒng)上的一個(gè)文件,但SELinux阻止虛擬化訪問除了/var/lib/libvirt/images里的其他文件。當(dāng)在共享路徑上宿主的虛擬機(jī)運(yùn)行時(shí),主機(jī)給出以下信息:SELinux is preventing /usr/bin/qemu-kvm from read access on the directory share。
專題推薦:SELinux:linux內(nèi)核的安全保鏢
這時(shí)我該怎么辦?我虛擬機(jī)的目的是在多個(gè)Linux版本上測(cè)試二進(jìn)制,所以共享路徑是最簡單的。有辦法讓/tmp/共享讓每個(gè)人都可用嗎?
Sander van Vugt:除了/var/lib/libvirt/images,你無法在路徑中共享虛擬機(jī)的原因在于SELinux。SELinux為系統(tǒng)添加了額外保護(hù)。通過在目錄上使用標(biāo)簽,將目錄設(shè)置為專有用途。存儲(chǔ)鏡像文件的***方式是通過在目錄上設(shè)置合適的類型標(biāo)簽。你這樣的情形,運(yùn)行下面兩個(gè)命令即可(請(qǐng)確保在根shell下執(zhí)行):
semanage --t --a virt_image_t /tmp/share(/.*) ? restorecon --R --v /tmp/share
如果還不行,可完全禁用SELinux??赏ㄟ^將下面這行添加都文件/etc/sysconfig/selinux中:
SELINUX=disabled
如果沒時(shí)間重啟計(jì)算機(jī),可使用setenforce 0暫時(shí)禁用SELinux,當(dāng)不要忘記更改上面的配置文件,否則在你重啟時(shí)又會(huì)自動(dòng)開啟SELinux。
接下來,你說想要每個(gè)人都能訪問/tmp/share的內(nèi)容。最簡單的方式是創(chuàng)建NFS共享,請(qǐng)確保文件/etc/exports包含以下行:
/tmp/share *(rw,no_root_squash)
然后,使用命令service nfs啟動(dòng)NFS服務(wù)器。對(duì)于其他計(jì)算機(jī),現(xiàn)在可加載NFS共享,使用下面命令即可:
mount --t nfs your.fedora.computer:/tmp/share/mnt
大功告成,訪問/mnt目錄即可訪問NFS共享的內(nèi)容,也可從這訪問鏡像文件。