在 Ubuntu 上遇到 SELinux 报错,先说一个重要前提:
Ubuntu 默认使用的是 AppArmor,而不是 SELinux
除非你手动安装并启用了 SELinux,否则一般不会出现 SELinux 报错。
下面分情况给你解决办法。
如果你看到类似:
apparmor="DENIED"/var/log/syslog 里有 audit: ... apparmor✅ 解决方法(AppArmor):
sudo aa-status
查看哪个程序被限制。
临时关闭某程序限制:
sudo aa-complain /path/to/profile
彻底关闭 AppArmor(不推荐):
sudo systemctl disable apparmor
sudo reboot
sestatus
可能结果:
SELinux status: disabled → 实际没开enforcing → 正在强制拦截permissive → 只记录不拦截sudo setenforce 0
(重启后恢复)
编辑配置文件:
sudo nano /etc/selinux/config
改成:
SELINUX=disabled
然后重启:
sudo reboot
sudo ausearch -m avc -ts recent
# 或
sudo dmesg | grep avc
生成修复策略:
sudo ausearch -m avc -ts recent | audit2allow -M myfix
sudo semodule -i myfix.pp
✅ 先切到 permissive 模式:
sudo setenforce 0
✅ Ubuntu 默认不支持,建议用 AppArmor
✅ Ubuntu 不建议用 SELinux
✅ 用 AppArmor + ufw 更安全、更稳定
除非你是:
如果你愿意,把 具体报错内容(命令行或日志)发出来,我可以直接帮你精准定位。