在 CentOS(以及 RHEL 系列系统)中,SELinux 默认开启,主要是出于安全设计的考虑。下面从「为什么默认开启」「开启有什么用」「为什么不关掉」几个角度说明。
SELinux(Security-Enhanced Linux)是**强制访问控制(MAC)**机制,由美国国家安全局(NSA)主导开发,后来集成进 Linux 内核。
它不只是“谁能读文件”,而是:
CentOS 常用于:
如果只靠:
一旦某个服务被入侵(如 Web、FTP、数据库), attacker 可能:
SELinux 能在“已经被入侵”的情况下,限制破坏范围。
SELinux 的核心思想是:
每个进程只拥有“完成工作所必需的最小权限”
例如:
/var/www/etc/shadow即使 Nginx 有漏洞,也很难搞破坏。
比如你误把:
chmod 777 /etc
在没有 SELinux 时很严重
在开启 SELinux 时,仍可能被策略拦截。
很多行业要求:
关闭 SELinux 通常直接不合规
getenforce
| 状态 | 说明 |
|---|---|
| Enforcing | 强制开启(默认) ✅ |
| Permissive | 只记录不拦截 ⚠️ |
| Disabled | 完全关闭 ❌ |
查看配置文件:
cat /etc/selinux/config
现实问题:
常见误解:
“服务起不来,关 SELinux 就好了”
✅ 正确做法:
ausearch -m avc -ts recent
sealert -a /var/log/audit/audit.log
✅ 不推荐,但在以下情况可能临时关闭:
⚠️ 生产环境 不建议 Disabled
CentOS 默认开启 SELinux,是为了在系统被攻破时, still 有最后一道安全防线。
如果你愿意,我可以:
你现在是遇到 SELinux 导致的问题了吗?