在 Ubuntu 上排查 SELinux 相关问题时,需要先明确一个事实:Ubuntu 默认并不使用 SELinux,而是使用 AppArmor。不过在某些场景(如从 RHEL/CentOS 迁移、服务器定制、容器环境)中可能会启用 SELinux。
下面按排查流程说明。
getenforce
或
sestatus
可能结果:
Disabled:SELinux 未启用(最常见)Permissive:启用但只记录不拦截Enforcing:启用并强制拦截如果命令不存在:
which getenforce
说明系统未安装 SELinux 工具。
dpkg -l | grep selinux
常见包:
selinux-basicsselinux-policy-defaultpolicycoreutils如未安装,Ubuntu 基本不可能在使用 SELinux。
cat /proc/filesystems | grep selinux
或
grep SELINUX /boot/config-$(uname -r)
Ubuntu 内核通常 支持 SELinux,但默认不启用。
查看是否禁用了 SELinux:
cat /proc/cmdline | grep selinux
常见参数:
selinux=0 → 禁用enforcing=0 → PermissiveGRUB 配置文件:
/etc/default/grub
ausearch -m avc -ts recent
或
grep AVC /var/log/audit/audit.log
如没有 audit 日志:
journalctl | grep avc
setenforce 0
验证:
getenforce
sealert -a /var/log/audit/audit.log
restorecon -Rv /path
audit2allow -a
Ubuntu 官方默认安全机制是 AppArmor,不是 SELinux
排查权限问题时应先确认:
aa-status
如果看到很多 enforce 的 profile,问题很可能是 AppArmor 而非 SELinux。
getenforce → 是否启用sestatus → 当前模式dpkg -l | grep selinux → 是否安装/proc/cmdline → 启动参数ausearch / audit.log → 拒绝记录如果你能提供:
sestatus 输出我可以帮你精确定位是 SELinux / AppArmor / 文件权限 哪一类问题。