SELinux的策略规则是系统安全访问控制的核心依据,不同的查看方法适用于不同的排查场景,下面详细介绍几种常用的查看方式。

一、查看SELinux基础状态与全局策略信息
在查看具体策略规则前,首先需要确认SELinux的运行状态,同时可以通过seinfo命令获取全局策略的基本统计信息。
先查看SELinux运行状态:
# 查看SELinux运行状态 getenforce # 查看详细的SELinux配置信息 sestatus
如果系统已安装setools-console工具包,可以使用seinfo命令查看策略的整体信息:
# 查看策略中所有的类型定义数量 seinfo -t # 查看策略中所有的角色定义数量 seinfo -r # 查看策略中所有的用户定义数量 seinfo -u # 查看指定类型的详细属性,比如查看httpd_t类型的信息 seinfo -t httpd_t -x
二、使用sesearch检索具体策略规则
sesearch是查找具体SELinux策略规则最常用的工具,支持按源类型、目标类型、访问权限等条件过滤规则。
常见的检索场景示例如下:
- 查看某个进程类型允许访问的所有文件类型规则
- 查看某个文件类型允许被哪些进程类型访问
- 查看特定权限对应的策略规则
# 查看httpd_t类型进程允许访问的所有文件类型规则 sesearch -s httpd_t -A # 查看允许访问httpd_sys_content_t文件类型的所有进程类型规则 sesearch -t httpd_sys_content_t -A # 查看httpd_t进程对httpd_sys_content_t文件类型的读权限规则 sesearch -s httpd_t -t httpd_sys_content_t -A -p read # 查看所有允许绑定tcp端口的规则 sesearch -A -p bind -c tcp_socket
三、查看端口与文件的SELinux上下文规则
SELinux对端口和文件的访问权限和上下文标签强相关,可以通过semanage命令查看对应的上下文规则配置。
1. 查看端口上下文规则
端口上下文规则决定了哪些进程类型可以绑定对应端口:
# 查看所有端口的SELinux上下文规则 semanage port -l # 查看指定端口的上下文规则,比如查看80端口的规则 semanage port -l | grep 80 # 查看http_port_t类型对应的所有端口 semanage port -l -t http_port_t
2. 查看文件上下文规则
文件上下文规则决定了文件的默认标签,以及进程对文件的访问权限:
# 查看所有文件的SELinux上下文规则 semanage fcontext -l # 查看指定目录的上下文规则,比如查看/var/www/html目录的规则 semanage fcontext -l | grep "/var/www/html" # 查看httpd_sys_content_t类型对应的所有文件路径规则 semanage fcontext -l -t httpd_sys_content_t
四、查看布尔值策略规则
SELinux布尔值是可动态调整的策略开关,修改布尔值会临时改变策略规则的生效状态,查看布尔值的方法如下:
# 查看所有SELinux布尔值及其状态 getsebool -a # 查看指定布尔值的详细信息,比如查看httpd_can_network_connect的状态 getsebool httpd_can_network_connect # 查看布尔值对应的描述信息 semanage boolean -l # 查看指定布尔值的描述,比如查看httpd_can_network_connect semanage boolean -l | grep httpd_can_network_connect
五、查看当前生效的访问向量缓存规则
如果需要查看当前系统中实际生效的访问决策,可以查看访问向量缓存(AVC)的日志,AVC日志记录了策略规则的实际匹配情况:
# 查看AVC拒绝日志 ausearch -m AVC -ts recent # 查看所有AVC相关日志 ausearch -m AVC # 实时跟踪AVC日志 ausearch -m AVC -i
通过AVC日志可以反推当前生效的策略规则,适合排查实际发生的权限拒绝问题。
方法对比与适用场景
不同查看方法的适用场景可以参考下表:
| 方法 | 适用场景 | 依赖工具 |
|---|---|---|
| seinfo | 查看策略全局统计信息、类型属性 | setools-console |
| sesearch | 检索具体访问权限对应的策略规则 | setools-console |
| semanage | 查看端口、文件上下文规则、布尔值配置 | policycoreutils-python-utils |
| getsebool | 查看布尔值当前生效状态 | policycoreutils |
| ausearch | 查看实际生效的访问决策、排查权限问题 | audit |
实际使用中可以根据需求选择对应的方法,多数权限排查场景会结合sesearch和ausearch共同使用,先通过日志定位问题,再通过规则检索确认策略配置。