Ubuntu SELinux故障排查指南
一、基础状态检查
-
确认SELinux是否启用
- 使用命令
getenforce查看当前模式(Enforcing/Permissive/Disabled)。 - 若未安装,需先安装基础包:
sudo apt install selinux-basics selinux-policy-default。
- 使用命令
-
查看系统日志
- 核心日志路径:
/var/log/audit/audit.log,用grep "avc" /var/log/audit/audit.log过滤拒绝记录。 - 辅助工具:
ausearch -m avc -ts recent搜索近期拒绝事件,aureport -m avc生成统计报告。
- 核心日志路径:
二、常见问题处理
-
权限被拒绝(avc: denied)
- 用
audit2why分析拒绝原因:ausearch -m avc | audit2why。 - 临时生成策略规则:
ausearch -m avc | audit2allow -M my_policy,然后加载模块:sudo semodule -i my_policy.pp。
- 用
-
服务或应用无法运行
- 检查对应服务的SELinux上下文:
ls -Z /path/to/service,确保上下文正确。 - 临时设置为宽容模式测试:
sudo setenforce 0,若问题消失则需调整策略。
- 检查对应服务的SELinux上下文:
-
策略配置错误
- 使用
semanage管理策略:semanage fcontext -l查看文件上下文,semanage boolean -l查看布尔值设置。 - 修改策略文件后,需重新编译并安装:
sudo semodule -i custom_policy.pp。
- 使用
三、高级操作与工具
-
临时/永久模式切换
- 临时禁用:
sudo setenforce 0(Permissive模式,仅记录不阻止)。 - 永久修改:编辑
/etc/selinux/config,设置SELINUX=disabled并重启。
- 临时禁用:
-
日志分析工具
sealert:交互式分析日志并提供解决方案(需安装setroubleshoot-server)。dmesg/journalctl:查看内核级错误,辅助定位系统级问题。
四、注意事项
- 兼容性风险:Ubuntu默认使用AppArmor,若需使用SELinux需手动安装配置,可能与其他安全机制冲突。
- 备份数据:修改策略或禁用前,建议备份重要数据和配置文件。
- 社区支持:若复杂问题无法解决,可参考Ubuntu官方文档或社区论坛(如Ask Ubuntu)。
参考来源: