Linux 系統權限與 SELinux
Linux 系統權限與 SELinux(Security-Enhanced Linux)是伺服器安全管理的核心部分。傳統 Unix 權限(如 chmod
、chown
)提供基本的檔案與目錄控制,而 SELinux 則提供強制存取控制(MAC),進一步增強系統安全性。本篇將詳細介紹權限管理與 SELinux 強化設定,確保 Linux 伺服器的安全。
目錄
- Linux 檔案與目錄權限管理
- Linux 使用者與群組管理
- ACL(存取控制清單)
- SELinux 基本概念
- SELinux 模式與狀態管理
- SELinux 安全上下文與策略
- SELinux 日誌分析與除錯
- 結語
Linux 檔案與目錄權限管理
Linux 使用 rwx(讀寫執行)權限 來控制檔案與目錄存取。
檢視權限
ls -l
範例輸出:
-rw-r--r-- 1 user1 users 4096 Jan 18 12:34 example.txt
解釋:
-rw-r--r--
:檔案權限user1
:擁有者users
:擁有群組
修改檔案權限 (chmod
)
設定 example.txt
為擁有者可讀寫,其他人只能讀取:
chmod 644 example.txt
允許所有人讀寫執行:
chmod 777 script.sh
修改檔案擁有者 (chown
)
變更 example.txt
的擁有者為 admin
,群組為 staff
:
sudo chown admin:staff example.txt
遞迴變更整個目錄的擁有者:
sudo chown -R user1:usergroup /var/www/
Linux 使用者與群組管理
建立使用者
sudo useradd -m user1
設定密碼
sudo passwd user1
刪除使用者
sudo userdel -r user1
建立群組
sudo groupadd devops
將使用者加入群組
sudo usermod -aG devops user1
列出使用者的群組
groups user1
ACL(存取控制清單)
ACL(Access Control List)允許細緻控制使用者對特定檔案的權限。
檢視 ACL 設定
getfacl example.txt
設定 ACL 權限(允許 user2
讀取 example.txt
)
setfacl -m u:user2:r example.txt
移除 ACL
setfacl -x u:user2 example.txt
SELinux 基本概念
SELinux 採用 強制存取控制(MAC),比傳統 Unix 權限更強。
檢查 SELinux 是否啟用
sestatus
可能的輸出:
SELinux status: enabled
Current mode: enforcing
Policy version: 33
檢視 SELinux 安全上下文
ls -Z /var/www/html/
範例輸出:
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
SELinux 模式與狀態管理
SELinux 三種模式:
- Enforcing(強制模式,所有規則均生效)
- Permissive(寬容模式,只記錄違規,不封鎖)
- Disabled(停用)
切換 SELinux 模式
設定為 寬容模式(不封鎖但記錄):
sudo setenforce 0
恢復 強制模式:
sudo setenforce 1
永久修改 /etc/selinux/config
:
SELINUX=enforcing
重新啟動生效:
sudo reboot
SELinux 安全上下文與策略
設定檔案的 SELinux 上下文
允許 Nginx 存取 /var/www/html
:
sudo chcon -R -t httpd_sys_content_t /var/www/html
還原檔案預設 SELinux 上下文
sudo restorecon -Rv /var/www/html
設定 SELinux Boolean 變數(允許 Apache 連線外部資料庫)
sudo setsebool -P httpd_can_network_connect_db 1
列出所有可調整的 Boolean 值:
getsebool -a
SELinux 日誌分析與除錯
檢查 SELinux 違規日誌
sudo journalctl -t setroubleshoot
或手動檢視 /var/log/audit/audit.log
:
sudo grep AVC /var/log/audit/audit.log
使用 audit2why
分析錯誤
sudo ausearch -m avc -ts recent | audit2why
使用 audit2allow
產生政策修正
sudo ausearch -m avc -ts recent | audit2allow -M mypolicy
sudo semodule -i mypolicy.pp
結語
本篇提供了 Linux 權限管理與 SELinux 強化的完整教學,包括傳統 Unix 權限、ACL、SELinux 相關設定與日誌分析。透過這些技術,您可以提升 Linux 伺服器的安全性,防止未授權存取與攻擊。