> 软件包与系统管理 > 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 对象类型的策略。以下说明了与每种对象类型一起使用的常见选项。

通用管理选项

对象类型

生成的命令:

请尝试组合命令。

描述:

`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 策略可能会导致系统上的特定服务或整个系统被阻止访问。在进行更改之前,备份当前策略或谨慎测试非常重要。


相同类别命令