首頁 > 套件與系統管理 > semanage

semanage:SELinux 策略管理

semanage 是一個用於管理 SELinux(Security-Enhanced Linux)策略的命令行工具。您可以使用它來添加、修改、刪除和列出各種 SELinux 策略元素,例如文件上下文、網絡端口、布爾值和用戶映射。它有助於精確控制系統的安全策略,確保應用程序和服務安全運行。

概述

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 策略可能會導致系統的特定服務或整個系統無法訪問。在進行更改之前,備份現有策略或仔細測試非常重要。


相同類別命令