使用sestatus命令查看SELinux是否启用及运行模式,enforcing表示策略生效;2. 用getenforce快速获取当前模式;3. 通过sestatus -b或getsebool检查布尔值配置;4. 分析/var/log/audit/audit.log中“avc: denied”日志确认策略拒绝行为,结合ausearch或aureport工具高效排查。

要确认SELinux策略是否生效,核心是检查其运行状态和策略模式,并结合日志分析实际执行情况。直接使用sestatus命令是最快的方法,它能一次性展示关键信息。
查看SELinux整体状态 (sestatus)
这是最全面的检查方式,能立刻了解SELinux是否启用及其工作模式。
操作方法:-
基本状态:在终端执行
sestatus。如果输出中 "SELinux status" 为 "enabled",则表示SELinux已开启。 -
运行模式:关注 "Current mode" 字段。
- enforcing:强制模式,策略正在严格执行,会阻止违规操作。这是生产环境的推荐状态。
- permissive:宽容模式,策略仅记录违规行为但不阻止,常用于排错或测试。
- disabled:禁用状态,SELinux完全不工作。
- 加载的策略:查看 "Loaded policy name" 字段。通常应为 "targeted",表示只对特定网络服务进行保护,这是最常见的配置。
快速获取当前模式 (getenforce)
当你只需要知道SELinux当前是强制、宽容还是关闭时,这个命令更简洁。
操作方法:- 直接在终端输入
getenforce。 - 命令会直接返回三种结果之一:Enforcing、Permissive 或 Disabled,无需解析复杂输出。
检查策略规则开关 (布尔值)
SELinux包含许多可配置的规则开关(称为布尔值),它们可以微调策略,例如允许或禁止httpd服务访问网络。
操作方法:- 使用
sestatus -b命令,可以列出所有当前加载的布尔值及其开关状态(on/off)。 - 例如,若要确认FTP匿名用户上传功能是否被SELinux允许,可以查找
ftpd_anon_write这个布尔值是否为 on。 - 也可以用
getsebool -a | grep ftp来筛选查看与特定服务相关的布尔值。
分析SELinux拒绝日志
即使SELinux处于enforcing模式,系统服务仍可能因权限问题而失败。查看日志是判断问题是否由SELinux策略引起的关键。
排查步骤:-
定位日志:主要日志文件位于
/var/log/audit/audit.log。如果没有安装审计服务,则可能在/var/log/messages中。 - 查找拒绝记录:搜索包含 "avc: denied" 的条目。这些记录详细说明了哪个进程(scontext)试图对哪个文件或端口(tcontext)执行何种操作(如read, write)时被拒绝。
-
解读日志:利用
ausearch -m avc -ts recent查看最近的拒绝事件,或用aureport -m avc生成摘要报告,这比直接翻看原始日志更高效。
基本上就这些。通过组合使用这几个工具,就能准确掌握SELinux策略的生效和执行情况。










