萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 查看與關閉 SELinux 完整操作指南

SELinux (Security-Enhanced Linux) 實作強制存取控制 (MAC),以安全標籤 (Label) 限制進程對檔案、埠口、能力的存取。雖然大幅提升安全性,但錯誤配置會導致服務啟動失敗、權限拒絕。本文說明查看狀態、臨時/永久關閉、模式切換、常見問題排查與建議策略。

查看 SELinux 狀態

# 方法 1:詳細資訊
/usr/sbin/sestatus -v
# SELinux status:                 enabled
# SELinuxfs mount:                /sys/fs/selinux
# Current mode:                   enforcing
# Mode from config file:          enforcing
# Policy version:                 31
# Policy from config file:        targeted

# 方法 2:快速查看目前模式
getenforce
# Enforcing / Permissive / Disabled

模式說明

臨時切換 (不重開機,重開機失效)

# 切換至 Permissive (推薦除錯用)
setenforce 0
# 或
setenforce Permissive

# 切回 Enforcing
setenforce 1
# 或
setenforce Enforcing

永久關閉 / 變更預設模式 (需重開機)

# 編輯配置檔
vim /etc/selinux/config
# SELINUX=enforcing  →  SELINUX=disabled  (或 permissive)

# 重開機
reboot

# 驗證
getenforce
sestatus

⚠ 警告:從 Enforcing → Disabled 重開機後,檔案系統安全標籤可能遺失。若日後重新啟用,**必須強制重新標記**:

touch /.autorelabel
reboot
# 開機過程會跑 restorecon -R /,耗時視檔案數而定

常見問題排查

# 1. 查看被拒絕的存取 (需安裝 setroubleshoot)
sealert -a /var/log/audit/audit.log

# 2. 依拒絕日誌產生允許政策模組
ausearch -c 'httpd' --raw | audit2allow -M my-httpd
semodule -i my-httpd.pp

# 3. 檔案標籤錯誤修復
restorecon -Rv /var/www/html
# 或指定類型
chcon -R -t httpd_sys_content_t /var/www/html

# 4. 埠口標籤管理
semanage port -l | grep http
semanage port -a -t http_port_t -p tcp 8080

建議策略

  1. **生產環境保持 Enforcing**,配合 audit2allow 逐步完善政策。
  2. 新服務上線前,先在測試環境跑 Permissive 收集 avc: denied 日誌,產生模組後再部署。
  3. 容器環境:主機 Enforcing,容器內視需求決定 (通常保持 Enforcing,透過標籤隔離)。

SELinux 狀態查看示意圖

copyright © 萬盛學電腦網 all rights reserved
模式行為適用場景
Enforcing強制執行政策,拒絕違規存取並記錄生產環境 (預設)
Permissive**不拒絕**,僅記錄違規 (audit.log)除錯、政策開發、相容性測試
Disabled完全關閉,核心不載入 SELinux 模組極少數不相容舊應用、嵌入式裝置