Ubuntu 默认不启用 SELinux,主要原因是历史、生态和易用性方面的选择。具体原因如下:
1. Ubuntu 默认使用的是 AppArmor,不是 SELinux
- Ubuntu 从早期版本开始就选择了 AppArmor 作为默认 MAC(强制访问控制)安全机制
- SELinux 主要来自 Red Hat 体系(RHEL / CentOS / Fedora)
- 两套机制功能类似,但设计和用法差异很大
2. SELinux 学习和管理成本较高
SELinux 特点:
- 策略复杂
- 排错依赖
audit.log + sealert
- 很多软件需要专门策略
- 配置不当容易“直接拒绝服务”
对 Ubuntu 的目标用户(桌面 + 云 + 开发者)来说:
- AppArmor 更简单直观
- 配置文件是“路径 + 权限”形式,容易理解
3. 生态和软件兼容性
- 很多 Ubuntu 打包的软件默认只适配 AppArmor
- Docker、Snap、部分服务在 Ubuntu 上对 AppArmor 支持更好
- SELinux 在 Ubuntu 上属于“可选组件”,不是主线支持重点
4. Ubuntu 官方态度
- SELinux 在 Ubuntu 中可用但默认关闭
- 官方文档明确:AppArmor 是推荐方案
- 启用 SELinux 需要手动安装并修改内核参数
5. 简单对比
| 项目 |
SELinux |
AppArmor |
| 来源 |
NSA / Red Hat |
Novell / Ubuntu |
| 默认系统 |
RHEL/CentOS/Fedora |
Ubuntu/Debian |
| 配置难度 |
高 |
中低 |
| 策略粒度 |
很细 |
中等 |
| 排错难度 |
高 |
较低 |
6. 如果你想在 Ubuntu 上用 SELinux
是可以的,但需要:
sudo apt install selinux
然后修改 GRUB、重启、处理策略,过程较繁琐,且可能影响系统稳定性。
总结一句话
Ubuntu 默认关 SELinux,是因为它选了更简单、更贴合自身生态的 AppArmor,而不是因为 SELinux 不好。
如果你愿意,我可以帮你对比 AppArmor vs SELinux 实战配置,或者讲 什么时候该用 SELinux。