首页/系统/信创系统运维速查/SELinux 问题排查流程速查
安全加固65 条

SELinux 问题排查流程速查

服务突然报权限拒绝且切换 permissive 后恢复,基本可判定 SELinux 介入;按 模式→AVC→标签/布尔/策略 的顺序定位,避免直接关闭 SELinux 了事。

信创系统运维速查系统更新于 2026-10-13

SELinux 拒绝怎么定位

服务报权限拒绝、日志里出现 Permission denied,而文件权限本身没问题时,优先怀疑 SELinux。判定线索很直接:把模式临时切成 permissive 后恢复正常,基本可以确认是 SELinux 介入。定位顺序固定为 模式确认 → 抓 AVC 拒绝记录 → 读解释 → 按最小代价修复(标签、布尔或策略)→ 回到 enforcing 复测。不要用关闭 SELinux 收场。

基本信息

查看模式getenforce 返回 Enforcing/Permissive/Disabled;sestatus 看策略与详情
拒绝记录ausearch -m avc -ts recent,或 dmesg | grep -i avc
解释工具sealert -a 日志文件、audit2why
修复手段restorecon(标签)、setsebool -P(布尔)、semanage(策略与端口)
权限要求root 或 sudo

典型使用场景

  • 应用日志目录迁移后服务无法写日志,报 Permission denied
  • 自建服务监听非标准端口被拒(如 8080、9000)
  • Web 上传目录可以列出但写不进去
  • NFS 或共享目录挂载后匿名用户被拒
  • 安全加固把系统切成 enforcing 后,原本隐藏的越权访问大面积暴露

五步定位演示

五步定位演示
getenforce                                     # 1 确认当前模式
sestatus | head -5                               # 1 看策略与挂载状态
curl -I http://127.0.0.1/app 2>&1 | head         # 2 复现问题
ausearch -m avc -ts recent | tail -30            # 2 抓最近拒绝记录
sealert -a /var/log/audit/audit.log | head -40   # 3 读解释与建议
restorecon -Rv /data/web                         # 4 按建议修复(示例:标签)
setsebool -P httpd_can_network_connect on       # 4 需要联网时的布尔开关
ss -tlnp | grep app                              # 5 回 enforcing 复测

AVC 记录关键字段

字段含义排查用途
denied动作被拒确认是拒绝而非放行记录
scontext发起方上下文进程的类型域,如 httpd_t
tcontext目标上下文文件或端口的类型,如 default_t
tclass目标类别file、dir、tcp_socket 等
comm / exe发起进程直接定位是哪个程序触发
permissive=0当前为强制模式为 1 表示只在 permissive 下记录
setenforce 0 只能用来验证因果关系,确认后立刻 setenforce 1;把系统长期跑在 permissive 或直接 disabled 会让加固与等保审计项不达标。
从 disabled 改成 enforcing 前,官方建议先创建 /.autorelabel 并重启做一次全盘重新打标签,否则大量文件标签缺失会导致系统启动异常。

易错点

  • 把 SELinux 直接关掉解决问题,风险留到以后:relabel、审计项与后续升级都会受影响,且掩盖真实越权行为。
  • 同一现象可能由多条 AVC 叠加造成,修完第一条仍被拒时要继续检索最新记录,别急着换方案。
  • selinux 端口未登记:服务监听非标准端口需 semanage port -a 把端口归入对应类型,否则连接直接被拒。
  • restorecon 只会把标签恢复成策略定义值;如果路径本身没有 fcontext 规则,反复 restorecon 也是原样。
  • 从 disabled 直接切 enforcing 而不做全盘 relabel,会出现登录失败、服务起不来等连锁问题。

数据来源与参考

  • Red Hat 官方文档(Troubleshooting SELinux)
  • SELinux 官方 Wiki
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌