Ubuntu 中 SELinux 的常见问题与处理
一 背景与启用状态
getenforce(返回 Enforcing/Permissive/Disabled),或 sestatus -v 查看更详细信息。sudo setenforce 0(切到 Permissive,仅告警不阻断),sudo setenforce 1(切到 Enforcing)。仅对当前运行有效。二 安装与启用步骤
sudo apt updatesudo apt install selinux-basics selinux-policy-defaultsudo selinux-activateSELINUX=permissiveSELINUX=enforcingSELINUX=disabledsetenforce 即时生效。三 常见故障与快速排查
sudo setenforce 0,若恢复正常,多半是 SELinux 策略问题。sudo ausearch -m avc -ts recent 或 grep -i "denied" /var/log/audit/audit.log;必要时确保 auditd 已安装并运行:sudo systemctl start auditd && sudo systemctl enable auditd。sudo chcon -R -t httpd_sys_content_t /var/www/htmlsudo chcon -R -t mysqld_db_t /var/lib/mysqlsudo systemctl restart apache2 或 sudo systemctl restart mysql。sudo setsebool -P httpd_enable_homedirs 1(按需启用)。sudo setenforce 0,定位并修复后再回到 Enforcing。四 配置与运维注意事项
setenforce 仅影响当前会话;永久变更需编辑 /etc/selinux/config 并重启。SELINUXTYPE=disabled 等导致 “Failed to load SELinux policy. Freezing”,可在 GRUB 启动项临时添加 selinux=0 或 enforcing=0 进入系统,修正配置文件后重启。semanage、audit2allow、ausearch、aureport。在 Ubuntu 上如未预装,可通过 selinux-basics 等元包引入相关工具集(视仓库版本而定)。