SELinux 拦住了业务进程?
业务进程报权限错误但 root 也能失败:SELinux enforcing 拦截。给出看拒绝日志、临时切 permissive、按最小化原则加规则的步骤。
简短答案
如果连 root 都操作不了某路径(报 Permission denied 但 sudo 也无济于事),多半是 SELinux 在 enforcing 模式拦截。处理顺序:看拒绝日志 → 临时切 permissive 验证 → 按需加规则,别直接关 SELinux。
| 现象 | 原因 | 处理 |
|---|---|---|
AVC: denied 记录 |
进程类型与目标标签不匹配 | 按最小化原则加规则 |
| root 也写不了 | enforcing 模式全量拦截 | 临时 permissive 验证 |
| 业务端口拒绝监听 | 端口类型未放行 | 加 http_port_t 类规则 |
怎么排查
# 1. 查 SELinux 状态
getenforce
# 2. 看拒绝日志
ausearch -m avc -ts recent
grep 'denied' /var/log/audit/audit.log | tail
# 3. 临时切 permissive(不重启)
sudo setenforce 0
# 4. 验证业务通了再切回
sudo setenforce 1
- 永久调整需改
/etc/selinux/config,参考 麒麟 V11 服务器版 发行说明中默认模式。 - 桌面版默认策略更严,参考 麒麟 V11 桌面版。
- 安全基线按行业规范执行,能加规则就不要降级,更不能直接 disabled。
操作小结
- 看
ausearch找 denied 记录。 - 临时 permissive 验证,验证完切回。
- 规则按最小化原则添加,不降级。