在linux環境下執行某些程序時,偶爾會遇到來一個關於selinux的強制模式不可執行的狀況,這種狀況下須要關閉selinux或者將enforcing改成permissive模式後才能進行執行。selinux是Linux內核中提供的強制訪問控制(MAC)系統,下面就對selinux的幾種模式及其轉換進行總結:linux
selinux的啓動、關閉與查看 1)目前selinux支持三種模式,分別以下: •enforcing:強制模式,表明selinux運做中,且已經正確的開始限制 domain/type 了; •permissive:寬容模式:表明selinux運做中,不過僅會有警告訊息並不會實際限制 domain/type 的存取。這種模式能夠運來做爲 selinux 的 debug 之用; •disabled:關閉,selinux 並無實際運做。 2)查看selinux的模式 [root@localhost ~]# getenforce Enforcing //顯示出目前的模式爲 Enforcing 3)查看 selinux的政策 (Policy)? [root@localhost ~]# sestatus selinux status: enabled //是否啓動 selinux selinuxfs mount: /selinux //selinux 的相關文件資料掛載點 Current mode: enforcing //目前的模式 Mode from config file: enforcing //設定檔指定的模式 Policy version: 21 Policy from config file: targeted //目前的政策爲什麼? 4)經過配置文件調整selinux的參數 [root@localhost ~]# vim /etc/selinux/config selinux=enforcing //調整 enforcing|disabled|permissive selinuxTYPE=targeted //目前僅有 targeted 與 strict 5)selinux的啓動與關閉 上面是預設的政策與啓動的模式!須要注意的是,若是改變了政策則須要從新開機;若是由enforcing或permissive改爲disabled,或由disabled改爲其餘兩個,那也必需要從新開機。這是由於 selinux 是整合到核內心面去的, 你只能夠在 selinux 運做下切換成爲強制 (enforcing) 或寬容 (permissive) 模式,不可以直接關閉 selinux 的! 同時,由selinux關閉 (disable) 的狀態到開啓的狀態也須要從新開機! 查看selinux狀態: a)/usr/sbin/sestatus -v //若是selinux status參數爲enabled即爲開啓狀態 selinux status: enabled b)getenforce //也能夠用這個命令檢查 關閉selinux: a)臨時關閉(不用重啓機器): setenforce 0 //設置selinux 成爲permissive寬容模式 setenforce 1 //設置selinux 成爲enforcing強制模式 b)修改配置文件須要重啓機器: 修改/etc/selinux/config 文件 將selinux=enforcing改成selinux=disabled 重啓機器便可 若是你要啓動selinux的話,請將上述的selinux=enforcing設定穩當,而且指定selinuxTYPE=targeted 這一個設定,而且到/boot/grub/menu.lst這個文件去,看看核心有無關閉selinux。 [root@localhost ~]# vi /boot/grub/menu.lst default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-92.el5) root (hd0,0) kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet selinux=0 initrd /initrd-2.6.18-92.el5.img 若是要啓動selinux ,則不能夠出現 selinux=0的字樣在kernel後面! ======================================================= 舒適提示一個坑點: 通常而言,要關閉服務器的selinux功能,經常使用下面兩種方法: 1)臨時關閉 [root@localhost ~]# setenforce 0 [root@localhost ~]# getenforce 2)永久關閉 [root@localhost ~]# cat /etc/sysconfig/selinux SELINUX=disabled [root@localhost ~]# reboot 以前碰到一個坑,如上設置SELINUX爲disabled,並reboot重啓服務器後,selinux並無關閉! 最後發現緣由是: /etc/selinux/config文件裏面的SELINUX值沒有改過來,因此重啓不生效! 通常而言,服務器系統安裝後,/etc/sysconfig/selinux會默認爲/etc/selinux/config的軟連接,因此只需修改/etc/sysconfig/selinux文件中的SELINUX爲disabled便可! 由於系統啓動後默認會以/etc/selinux/config爲主。 [root@localhost ~]# ll /etc/sysconfig/selinux lrwxrwxrwx. 1 root root 17 Apr 27 02:41 /etc/sysconfig/selinux -> ../selinux/config 但以前碰到過的現象是: /etc/sysconfig/selinux 並非/etc/selinux/config的軟連接,因此這個細節要留意,若是不是軟連接關係,就最好兩個文件都修改下!