Linux中的SELinux详解--16
SELinux?寬容模式(permissive)?強(qiáng)制模式(enforcing)?關(guān)閉(disabled)??幾種模式之間的轉(zhuǎn)換
在CentOS6.2 中安裝intel 的c++和fortran 的編譯器時(shí),遇到來一個(gè)關(guān)于SELinux的強(qiáng)制模式不可執(zhí)行的情況,需要關(guān)閉SELinux 或者 將enforcing改為 permissive 模式,查詢來一些資料后,先對(duì)SELinux的幾種模式,以及其之間的關(guān)系和轉(zhuǎn)換方法做一小結(jié),以備以后查看和學(xué)習(xí)。
SELinux 的啟動(dòng)、關(guān)閉與查看?
1、并非所有的 Linux distributions 都支持 SELinux?
目前 SELinux 支持三種模式,分別如下:?
?enforcing:強(qiáng)制模式,代表 SELinux 運(yùn)作中,且已經(jīng)正確的開始限制 domain/type 了; ?permissive:寬容模式:代表 SELinux 運(yùn)作中,不過僅會(huì)有警告訊息并不會(huì)實(shí)際限制 domain/type 的存取。這種模式可以運(yùn)來作為 SELinux 的 debug 之用;
?disabled:關(guān)閉,SELinux 并沒有實(shí)際運(yùn)作。
2,查看SELinux的模式
# getenforce Enforcing <==就顯示出目前的模式為 Enforcing
3,查看 SELinux 的政策 (Policy)?
[root@master oracle]# sestatus
SELinux status: enabled <==是否啟動(dòng) SELinux
SELinuxfs mount: /selinux <==SELinux 的相關(guān)文件資料掛載點(diǎn)
Current mode: enforcing <==目前的模式
Mode from config file: enforcing <==設(shè)定檔指定的模式
Policy version: 21
Policy from config file: targeted <==目前的政策為何? 4,通過配置文件調(diào)整SELinux的參數(shù)? [root@www ~]# vi /etc/selinux/config?
SELINUX=enforcing <==調(diào)整 enforcing|disabled|permissive?
SELINUXTYPE=targeted <==目前僅有 targeted 與 strict?
5,SELinux 的啟動(dòng)與關(guān)閉?
【重要常識(shí)】上面是預(yù)設(shè)的政策與啟動(dòng)的模式!你要注意的是,如果改變了政策則需要重新開機(jī);如果由 enforcing 或 permissive 改成 disabled ,或由 disabled 改成其他兩個(gè),那也必須要重新開機(jī)。這是因?yàn)?SELinux 是整合到核心里面去的, 你只可以在 SELinux 運(yùn)作下切換成為強(qiáng)制 (enforcing) 或?qū)捜?(permissive) 模式,不能夠直接關(guān)閉 SELinux 的!?
同時(shí),由 SELinux 關(guān)閉 (disable) 的狀態(tài)到開啟的狀態(tài)也需要重新開機(jī)啦!所以,如果剛剛你發(fā)現(xiàn) getenforce 出現(xiàn) disabled 時(shí), 請(qǐng)到上述文件修改成為 enforcing 吧!
【重點(diǎn)】如果要啟動(dòng)SELinux必須滿足以下兩個(gè)點(diǎn):?
所以,如果你要啟動(dòng) SELinux 的話,請(qǐng)將上述的 SELINUX=enforcing 設(shè)定妥當(dāng),并且指定 SELINUXTYPE=targeted 這一個(gè)設(shè)定, 并且到 /boot/grub/menu.lst 這個(gè)文件去,看看核心有無關(guān)閉 SELinux 了呢?
[root@www ~]# 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?
# 如果要啟動(dòng) SELinux ,則不可以出現(xiàn) selinux=0 的字樣在 kernel 后面!?
【問題】通過上面的學(xué)習(xí)我們知道,如果將啟動(dòng)著的SELinux改為禁用,需要重啟電腦,我們不想重啟電腦又不想開啟SELinux該怎么辦呢??
【答案】將強(qiáng)制模式改為寬松模!?
[root@www ~]# setenforce [0|1]?
選項(xiàng)與參數(shù):?
0 :轉(zhuǎn)成 permissive 寬容模式;?
1 :轉(zhuǎn)成 Enforcing 強(qiáng)制模式
范例一:將 SELinux 在 Enforcing 與 permissive 之間切換與查看?
[root@www ~]# setenforce 0?
[root@www ~]# getenforce Permissive?
[root@www ~]# setenforce 1?
[root@www ~]# getenforce Enforcing
6,查看已啟動(dòng)程序的type設(shè)定?
[root@master oracle]# ps aux -Z?
LABEL USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND?
system_u:system_r:init_t root 1 0.0 0.4 2060 520 ? Ss May07 0:02 init [5 system_u:system_r:kernel_t root 2 0.0 0.0 0 0 ? S< May07 0:00 [migra] system_u:system_r:kernel_t root 11 0.0 0.0 0 0 ? S< May07 0:00 [kacpi] system_u:system_r:auditd_t root 4022 0.0 0.4 12128 560 ? S<sl May07 0:01 auditd system_u:system_r:auditd_t root 4024 0.0 0.4 13072 628 ? S<sl May07 0:00 /sbin/a system_u:system_r:restorecond_t root 4040 0.0 4.4 10284 5556 ? Ss May07 0:00 /usr/sb?
說明:其實(shí)這些東西我們都不用管,都是SELinux內(nèi)置的。只要學(xué)會(huì)在強(qiáng)制和寬松模式間轉(zhuǎn)換就行了!
小結(jié)附:
關(guān)閉SELinux的方法:
修改/etc/selinux/config文件中的SELINUX="" 為 disabled ,然后重啟。
如果不想重啟系統(tǒng),使用命令setenforce 0
注:
setenforce 1 設(shè)置SELinux 成為enforcing模式
setenforce 0 設(shè)置SELinux 成為permissive模式
在lilo或者grub的啟動(dòng)參數(shù)中增加:selinux=0,也可以關(guān)閉selinux
#---------------------------------------------------------------
查看selinux狀態(tài):
/usr/bin/setstatus -v
如下:
SELinux status:?????????????????enabled
SELinuxfs mount:????????????????/selinux
Current mode:???????????????????permissive
Mode from config file:??????????enforcing
Policy version:?????????????????21
Policy from config file:????????targeted
?
getenforce/setenforce查看和設(shè)置SELinux的當(dāng)前工作模式
#-----------------------------------------------------------------------
???發(fā)現(xiàn)服務(wù)一啟動(dòng),馬上停止,在網(wǎng)上查找資料,找到安裝時(shí)要先禁用SELinux,再安裝MySQL,步驟是:
1. 關(guān)閉SELinux,重啟系統(tǒng);
2. 安裝MySQL(MySQL server應(yīng)該可以啟動(dòng)了);
3. 啟用SELinux,重啟系統(tǒng),之后MySQL server就可以正常啟動(dòng)了。
???啟用禁用SELinux的方法是:
???vi /etc/selinux/config(也有人說是/etc/sysconfig/selinux文件,其實(shí)兩個(gè)之間是鏈接關(guān)系,隨便改其中一個(gè),另一個(gè)也改了)
???SELINUX=disable 禁用SeLinux
???SELINUX=enforcing 啟用SeLinux
CentOS系統(tǒng)如何快速關(guān)閉SELINUX
SELinux是一種基于 域-類型 模型(domain-type)的強(qiáng)制訪問控制(MAC)安全系統(tǒng),它由NSA編寫并設(shè)計(jì)成內(nèi)核模塊包含到內(nèi)核中,相應(yīng)的某些安全相關(guān)的應(yīng)用也被打了 SELinux的補(bǔ)丁,最后還有一個(gè)相應(yīng)的安全策略。雖然CentOS系統(tǒng)相比較而言相對(duì)安全穩(wěn)定。我在長(zhǎng)期的linux實(shí)踐中總結(jié)的經(jīng)驗(yàn) 是:SElinux是php的天敵。
我們經(jīng)常由于CentOS系統(tǒng)默認(rèn)系統(tǒng)的安全性配置導(dǎo)致些莫名其妙的問題,比如SElinux本來是用于安全子系統(tǒng)的權(quán)限控制,可是搞不好就發(fā)現(xiàn)限制多多,我們可以用如下方法快速關(guān)閉SElinux。
/usr/sbin/setenforce 0 立刻關(guān)閉SELINUX
/usr/sbin/setenforce 1 立刻啟用 SELINUX
加到系統(tǒng)默認(rèn)啟動(dòng)里面
echo "/usr/sbin/setenforce 0" >> /etc/rc.local
這樣,我們?cè)诓恍枰贑entOS系統(tǒng)中開啟SELINUX的時(shí)候,就可以快速的去關(guān)閉了,以及在需要的時(shí)候,在開啟它。
轉(zhuǎn)載于:https://www.cnblogs.com/zxouxuewei/p/5002475.html
總結(jié)
以上是生活随笔為你收集整理的Linux中的SELinux详解--16的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 那个好好玩的特效,每个人都可以做到哦
- 下一篇: iOS开发学无止境 - 这样好用的Rea