SELinux(Security-Enhanced Linux)是一個在Linux系統中實現強制存取控制(MAC)的安全模組。它透過將標籤應用到系統物件(檔案、進程等)來強制執行安全性策略,以實現更細粒度的存取控制。 SELinux有三種工作模式:Enforcing、Permissive和Disabled,本文將對這三種模式進行詳細介紹,並提供具體的程式碼範例。
1. Enforcing模式
Enforcing模式是最安全且建議使用的模式,它強制執行SELinux策略並對違規行為進行拒絕和記錄。在Enforcing模式下,系統會拒絕未經許可的訪問,並產生相應的日誌記錄。為了理解Enforcing模式,我們可以透過以下程式碼範例來示範如何設定檔案的SELinux標籤並嘗試存取:
# 创建测试文件 touch testfile # 查看文件的SELinux标签 ls -Z testfile # 修改文件的SELinux标签为httpd_sys_content_t类型 chcon -t httpd_sys_content_t testfile # 尝试访问文件 cat testfile
在上面的範例中,我們建立了一個名為testfile的文件,並將其SELinux標籤設定為httpd_sys_content_t類型。嘗試讀取這個檔案時,由於該檔案的標籤與目前進程的塤標籤不匹配,會導致存取被拒絕。
2. Permissive模式
Permissive模式允許系統管理員測試SELinux策略而不會實際攔截任何存取請求。在Permissive模式下,SELinux會記錄違規訪問,但不會對其進行拒絕。這種模式通常用於調試和測試新的SELinux策略。以下是一個範例,示範如何在Permissive模式下查看日誌記錄:
# 查看当前SELinux模式 sestatus # 切换SELinux模式为Permissive setenforce 0 # 尝试访问被禁止的文件 cat /etc/shadow # 查看SELinux日志记录 cat /var/log/audit/audit.log
在上述範例中,我們將SELinux模式切換為Permissive,並嘗試讀取/etc/shadow文件,此時日誌記錄會顯示有關被禁止訪問的信息,但實際訪問仍會被允許。
3. Disabled模式
Disabled模式會完全停用SELinux,取消任何與SELinux相關的存取控制和保護措施。這是最不建議的模式,因為系統的安全性將會受到影響。在Disabled模式下,系統將不會執行SELinux策略,也不會記錄任何違規存取。以下是一個範例,示範如何停用SELinux:
# 查看当前SELinux模式 sestatus # 禁用SELinux setenforce 0 # 查看当前SELinux模式 sestatus
在上面的範例中,我們透過setenforce指令將SELinux停用,並透過sestatus指令驗證了SELinux已處於Disabled模式。
總結:理解SELinux的三種工作模式對於系統安全和存取控制至關重要。 Enforcing模式提供最高等級的保護,Permissive模式用於調試和測試,而Disabled模式應盡量避免使用以確保系統的安全性。透過以上具體的程式碼範例,希望讀者能更深入地理解SELinux的工作模式及其優劣勢。
以上是熟悉SELinux的三種工作模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!