Ubuntu 下 SELinux 报错排查与修复
一、先确认是否真的在用 SELinux
getenforce(返回 Enforcing/Permissive/Disabled)sestatus二、常见报错与对应修复
修改了服务端口(如 SSH)后启动失败,日志出现 “Permission denied” 绑定端口
sudo apt-get -y install selinux-policy-develsemanage port -l | grep ssh(常见为 ssh_port_t tcp 22)sudo semanage port -a -t ssh_port_t -p tcp <你的端口>sudo systemctl restart sshdsudo ufw allow <你的端口>/tcp 或按需配置 iptables。出现大量 “avc: denied” 被拒绝日志
sudo ausearch -m avc -ts recent 或 sudo aureport -m avcsudo setenforce 0(仅用于排查,确认是 SELinux 引起后再恢复)sudo ausearch -m avc -ts recent | audit2allow -M myfix && sudo semodule -i myfix.ppsudo setenforce 1。误装/误启用 SELinux 导致系统或容器异常
sudo setenforce 0SELINUX=enforcing 改为 SELINUX=disabled,保存并重启apt purge 清理(请先确认不再需要 SELinux)。三、启用或重装 SELinux 的正确姿势
sudo apt updatesudo apt install selinux-basics selinux-policy-defaultsudo selinux-activatesudo setenforce 1(或编辑 /etc/selinux/config 设为 enforcing 后重启)四、实用命令清单
getenforce、sestatussudo setenforce 0|1(0=Permissive,1=Enforcing)semanage port -l | grep <服务名>、sudo semanage port -a -t <type> -p tcp <端口>sudo ausearch -m avc -ts recent、sudo aureport -m avc、grep selinux /var/log/audit/audit.logsudo audit2allow -M <模块名>、sudo semodule -i <模块名>.pp