SELinux 三种模式
SELinux 是内核强制的访问控制机制,有 enforcing、permissive 与 disabled 三种模式:enforcing 强制执行策略并拒绝违规访问,permissive 只记录不拦截,disabled 则完全关闭。临时切换用 setenforce 只影响当前运行期,永久修改要写在 /etc/selinux/config 里并重启。
基本信息
| 适用平台 | RPM 系发行版(openEuler、麒麟、统信 UOS 服务器版) |
|---|---|
| 查看模式 | getenforce 或 sestatus |
| 临时切换 | setenforce 0 与 setenforce 1 |
| 永久配置 | /etc/selinux/config |
| 适用策略 | SELINUXTYPE=targeted |
典型使用场景
- 服务报权限拒绝时确认是否由 SELinux 引起
- 等保整改要求开启强制模式并保留审计
- 排障期间临时切到 permissive 定位问题
- 新装主机确认默认模式是否符合基线
- 从关闭状态切回强制模式前的标签重建
查看与临时切换
查看与临时切换
getenforce # Enforcing、Permissive 或 Disabled
sestatus # 模式、策略类型与布尔值统计
setenforce 0 # 临时切到记录模式,仅用于定位问题
setenforce 1 # 切回强制模式
ausearch -m avc -ts recent 2>/dev/null | head # 查看最近的拒绝记录
journalctl -b | grep -i 'avc: denied' | tail # 从日志看拒绝条目永久配置
永久配置
# /etc/selinux/config
# SELINUX=enforcing
# SELINUXTYPE=targeted
ls -Z /data/web | head # 查看文件的安全上下文
restorecon -Rv /data/web # 按策略恢复正确标签
touch /.autorelabel && reboot # 从关闭状态切回强制模式前重建标签三种模式对照
| 模式 | 行为 | 适用场合 |
|---|---|---|
| enforcing | 拒绝并记录违规访问 | 生产默认,等保要求 |
| permissive | 只记录不拒绝 | 排障定位阶段 |
| disabled | 完全不启用 | 明确不需要时,需重启生效 |
| 切换要求 | disabled 与启用状态互切需重启 | 由关到开前要重建标签 |
遇到拒绝怎么查
- 先看日志里的 avc denied 记录确认被拒对象
- 确认文件安全上下文是否与预期一致
- 用 restorecon 恢复正确的标签
- 需要调整布尔值时查清语义再改
- 归类为策略问题后按厂商建议放行,而不是直接关闭
各发行版与安装模式的默认值不同,先 sestatus 看现状;从 disabled 切回 enforcing 前必须重建标签,否则可能出现服务异常甚至无法进入图形界面。