Linux下selinux簡單梳理

 

在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的軟連接,因此這個細節要留意,若是不是軟連接關係,就最好兩個文件都修改下!
相關文章
相關標籤/搜索