在 Ubuntu 上学习 SELinux,需要先明确一个常见误区:
Ubuntu 默认使用的是 AppArmor,而不是 SELinux
SELinux 主要用于 RHEL / CentOS / Rocky / Fedora 等发行版
不过,Ubuntu 也可以安装和使用 SELinux,只是不如 RHEL 系成熟。下面给你一套从入门到实战的学习路线。
/etc/apparmor.d/enforcing # 强制执行(拦截违规)
permissive # 只记录不拦截(调试用)
disabled # 关闭
查看当前模式:
getenforce
user:role:type:level
查看上下文:
ls -Z
ps -Z
⚠️ 建议用虚拟机或测试机
sudo apt update
sudo apt install selinux selinux-utils selinux-basics policycoreutils
sudo selinux-activate
编辑:
sudo nano /etc/selinux/config
内容:
SELINUX=permissive
SELINUXTYPE=default
重启:
sudo reboot
getenforce # 查看模式
setenforce 0|1 # 临时切换
sestatus # 详细信息
ls -Z # 文件上下文
ps -Z # 进程上下文
semanage # 策略管理
restorecon # 恢复上下文
chcon # 临时改上下文
ausearch # 查审计日志
sealert # 错误分析(RHEL 更全)
ls -Zchcon 改类型restorecon 恢复例如:
sudo ausearch -m avc -ts recent
sudo dmesg | grep avc
audit2allowsudo ausearch -m avc | audit2allow -M mypolicy
sudo semodule -i mypolicy.pp
✅ 初学 SELinux 一定要用 Permissive
❌ 不要在生产 Ubuntu 直接 enforcing
✅ Ubuntu 学 SELinux,不如用 CentOS / Rocky / Fedora 更顺
✅ 如果目标是“Ubuntu 安全”,先学 AppArmor
如果你愿意,我可以:
你更想从哪一步开始?