在 Ubuntu 上需要先说明一个关键点:
Ubuntu 默认并不使用 SELinux,而是使用 AppArmor。
如果你在 Ubuntu 上遇到 “SELinux” 相关错误,通常是以下情况之一:
- 你误装了 SELinux
- 软件/脚本把 AppArmor 报错当成 SELinux
- 你其实用的是 RHEL/CentOS 却以为是 Ubuntu
下面分情况说明 如何修复。
getenforce
Disabled / Permissive / Enforcing → 说明 SELinux 存在查看 AppArmor 状态:
sudo aa-status
Permission denied (apparmor)
sudo dmesg | grep apparmor
sudo journalctl | grep apparmor
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx
sudo systemctl disable apparmor
sudo reboot
sudo setenforce 0
编辑:
sudo nano /etc/selinux/config
改为:
SELINUX=disabled
然后重启:
sudo reboot
sudo ausearch -m avc -ts recent
sudo sealert -a /var/log/audit/audit.log
sudo restorecon -Rv /var/www
或添加策略:
sudo audit2allow -a
✅ Ubuntu 不建议使用 SELinux
✅ 保留 AppArmor
✅ 遇到权限问题,优先检查 AppArmor 而非 SELinux
为了给你精准修复方案,请补充:
lsb_release -a)我可以直接帮你定位是哪一层的问题。