一、SELinux三種模式簡介
Enforcing:強制模式。代表SELinux在運行中,且已經開始限制domain/type之間的驗證關系
Permissive:寬容模式。代表SELinux在運行中,不過不會限制domain/type之間的驗證關系,即使驗證不正確,進程仍可以對文件進行操作。不過如果驗證不正確會發出警告
Disabled:關閉模式。SELinux並沒有實際運行
二、getenforce命令
功能:查看當前SELinux的運行模式
三、sestatus命令
功能:查看當前系統上面SELinux的策略,運行模式等信息
命令格式:
sestatus [-vb]
相關參數與選項:
-v:檢查列於/etc/sestatus.conf內的文件御錦城的安全上下文
-b:將目前策略的規則布爾值列出,亦即某些規則是否要啟動(0/1)之意
演示案例
可以看到當前的策略為targeted。模式為enforcing
四、SELinux的配置文件(/etc/selinux/config)
SELINUX=enforcing:當前SELinux的模式
SELINUXTYPE=targeted:當前SELinux的策略
如果想要修改策略和模式,就更改這個文件里面的內容即可
五、SELinux模式的更改(setenforce命令)
SELinux模式的更改規則:
①不論是從Enforcing或Permissive改為Disabled,還是由Disabled改為Enforcing或Permissive,系統都需要重新啟動。因為SELinux是整合到內核中的
②在SELinux已經運行的模式下:只能夠在Enforcing和Permissive兩種模式之間進行切換,而不能直接關閉SELinux(Disabled),如果你使用getenforce發現當前SELinux模式為Disabled時,請立即到/etc/selinux/config文件中將SELinux改為Enforcing,然后重新啟動系統
③如果你從Disable轉到啟動SELinux的模式時,系統必須針對文件寫入安全上下文的信息,因此啟動過程會花費不少時間等待重新寫入SELinux安全上下文(有時成為SELinux Label),而且在寫完之后還要再重新啟動一次
④如果你在Enforcing模式,但是可能由於一些設置的問題導致SELinux讓某些服務無法正常地運行,此時可以將Enforcing的模式改為寬容(Permissive)的模式,讓SELinux只會警告而,而不會直接阻止主體進程的讀取權限
setenforce命令格式:
# 轉換為Permissive寬容模式
setenforce 0
# 轉換為Enforcing強制模式
setenforce 1
注意事項:setenforce無法設置SELinux為Disabled模式
演示案例
六、restorecon -Rv 命令
介紹:
當你從Disabled切換為Enforcing模式時,會有一堆服務無法順利啟動,會跟你說/lib/xxx里面的數據沒有權限讀取,所以啟動失敗。原因:大多是重新寫入SELinux類型時出錯的緣故
解決辦法:切換為Permissive寬容模式,然后使用restorecon -Rv / 重新還原所有SELinux的類型,就能解決這個問題