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