概述
semanage 用於永久性更改 SELinux 策略。與 `chcon` 或 `restorecon` 臨時應用或應用現有策略不同,`semanage` 用於定義新的策略規則,並確保這些規則在系統重新啟動後仍然有效。
主要管理對象
通過 semanage 可以管理的主要 SELinux 策略元素。
- 文件上下文 (File Contexts):為特定路徑的文件和目錄指定 SELinux 類型
- 網絡端口 (Network Ports):為特定端口指定 SELinux 類型
- SELinux 布爾值 (Booleans):用於開啟或關閉 SELinux 策略特定行為的開關
- SELinux 用戶映射 (User Mappings):將 Linux 用戶映射到 SELinux 用戶
主要選項
semanage 針對不同的 SELinux 對象類型管理策略。以下說明了與每種類型對象一起使用的常見選項。
通用管理選項
對象類型
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`semanage` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
使用範例
展示使用 semanage 命令管理 SELinux 策略的各種場景。
列出所有文件上下文規則
sudo semanage fcontext -l
查看當前系統中定義的所有文件上下文映射規則。
列出特定端口規則
sudo semanage port -l | grep http
列出用於 HTTP 服務的端口規則。
添加自定義文件上下文
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html/my_app(/.*)?"
添加一條規則,將 `/var/www/html/my_app` 目錄及其子文件指定為 `httpd_sys_content_t` 類型。(添加後需要運行 restorecon)
添加自定義端口
sudo semanage port -a -t http_port_t -p tcp 8080
將 TCP 端口 8080 添加為 `http_port_t` 類型,以便 Web 服務使用。
啟用 SELinux 布爾值
sudo semanage boolean -m --on httpd_can_network_connect
啟用 `httpd_can_network_connect` 布爾值,允許 Apache Web 服務器發起網絡連接。
安裝
semanage 通常作為 `policycoreutils` 或類似包的一部分,在大多數使用 SELinux 的 Linux 發行版中提供。以下是主要發行版的安裝方法。
RHEL/CentOS/Fedora
sudo dnf install policycoreutils-python-utils
使用 DNF 或 YUM 包管理器安裝 `policycoreutils-python-utils` 包。
Debian/Ubuntu
sudo apt install selinux-utils
使用 APT 包管理器安裝 `selinux-utils` 包。
提示與注意事項
在使用 semanage 管理 SELinux 策略時,一些有用的提示和需要注意的事項。
應用更改
更改文件上下文規則後,必須運行 `restorecon` 命令將更改後的上下文應用於文件系統。
- `sudo restorecon -Rv /path/to/directory`
診斷問題和生成策略
如果遇到 SELinux 相關問題,可以檢查 `/var/log/audit/audit.log` 文件以識別被拒絕的操作,並使用 `audit2allow` 工具生成必要的策略規則。
- `sudo tail -f /var/log/audit/audit.log` (實時查看日誌)
- `sudo audit2allow -a -M mypolicy` (根據策略違規日誌生成 `mypolicy.te` 和 `mypolicy.pp` 文件)
- `sudo semodule -i mypolicy.pp` (加載生成的策略模塊)
注意事項
錯誤地修改 SELinux 策略可能會導致系統的特定服務或整個系統無法訪問。在進行更改之前,備份現有策略或仔細測試非常重要。