哪些發行版預設啟用 SELinux?
Fedora、RHEL、CentOS、Rocky Linux、AlmaLinux 等紅帽系發行版預設都會啟用 SELinux;Debian / Ubuntu 則預設使用另一套機制 AppArmor,但也可以選擇安裝 SELinux。本系列以紅帽系為主。
三種運作模式
getenforce
會回傳以下其中一種:
- Enforcing:強制模式,違反政策的操作會被拒絕並記錄
- Permissive:寬容模式,違反政策的操作仍會被允許,但會記錄下來(適合除錯用)
- Disabled:完全關閉 SELinux
暫時切換模式
sudo setenforce 1 # 切到 Enforcing
sudo setenforce 0 # 切到 Permissive
這個指令只在這次開機期間有效,重開機後會恢復成設定檔內的模式。
永久變更設定
編輯 /etc/selinux/config:
SELINUX=enforcing
SELINUXTYPE=targeted
SELINUX:enforcing/permissive/disabledSELINUXTYPE:政策類型,targeted(預設,只針對特定服務套用嚴格規則)是最常見的選擇
修改 SELINUXTYPE 或從 disabled 切回啟用,需要重開機並重新標記整個檔案系統,這個過程可能需要一些時間。
查看完整狀態
sestatus
會顯示目前模式、政策類型、政策版本等資訊。
關於「乾脆關掉就好」
直接把 SELinux 設成 disabled 確實能讓很多問題「消失」,但同時也關掉了這層額外的保護。比較好的做法是保持 Enforcing,遇到問題時用後面章節介紹的工具找出真正的原因並修正,而不是關掉整個機制。