温馨提示×

Ubuntu为什么没有SELinux

小樊
51
2026-08-24 09:55:56
栏目: 智能运维

Ubuntu 并不是“没有”SELinux,而是默认没有启用,并且官方更偏向使用 AppArmor。下面分点说明原因和背景。


1. Ubuntu 默认使用的是 AppArmor,不是 SELinux

Ubuntu 从很早开始就选择 AppArmor 作为默认的强制访问控制(MAC)安全模块,而不是 SELinux。

主要原因包括:

✅ AppArmor 的优势(对 Ubuntu 来说)

  • 配置更简单
    • 基于“路径”而非“标签”
    • 规则对人类更友好
  • 与 Ubuntu 生态集成更好
    • 大量 Ubuntu 官方软件都自带 AppArmor profile
  • 维护成本更低
    • Canonical 长期以来主要投入在 AppArmor 上

2. SELinux 在 Ubuntu 中“存在但默认不启用”

SELinux 并不是被删除,而是:

  • 内核支持 ✅(Ubuntu 内核编译时通常启用了 SELinux)
  • 默认 不激活
  • 没有预装 SELinux 策略

你可以通过以下方式确认:

cat /boot/config-$(uname -r) | grep SELINUX

通常会看到:

CONFIG_SECURITY_SELINUX=y

3. 为什么 Ubuntu 不像 RHEL / CentOS / Fedora 那样用 SELinux?

对比项 SELinux AppArmor
复杂度
学习曲线 陡峭 平缓
策略模型 标签(Label) 路径(Path)
默认发行版 RHEL 系 Debian / Ubuntu
企业支持 Red Hat Canonical

Red Hat 投入了大量资源完善 SELinux,而 Ubuntu 选择了另一条路。


4. 如果你想在 Ubuntu 上用 SELinux,是可以的

虽然不推荐新手尝试,但技术上可行:

sudo apt install selinux selinux-utils selinux-basics

然后:

sudo selinux-activate
sudo reboot

⚠️ 风险提醒

  • 可能导致系统无法启动
  • 需要手动编写/调试策略
  • Ubuntu 社区对 SELinux 的支持远不如 RHEL

5. 常见误解澄清

“Ubuntu 不支持 SELinux”
支持,只是默认不用

“SELinux 比 AppArmor 更安全”
两者设计目标不同,不能简单比较


6. 总结一句话

Ubuntu 没有默认启用 SELinux,是因为它选择了 AppArmor 作为默认安全模块,而不是因为 SELinux 不存在或不支持。

如果你愿意,我可以:

  • 对比 SELinux vs AppArmor 的实战差异
  • 教你 如何在 Ubuntu 上安全启用 SELinux
  • 解释 为什么 Docker / Kubernetes 对 SELinux 更敏感

你更关心哪一块?

0