Ubuntu SELinux故障排查指南

Ubuntu SELinux故障排查指南

一、基础状态检查

  1. 确认SELinux是否启用

    • 使用命令 getenforce 查看当前模式(Enforcing/Permissive/Disabled)。
    • 若未安装,需先安装基础包:sudo apt install selinux-basics selinux-policy-default
  2. 查看系统日志

    • 核心日志路径:/var/log/audit/audit.log,用 grep "avc" /var/log/audit/audit.log 过滤拒绝记录。
    • 辅助工具:ausearch -m avc -ts recent 搜索近期拒绝事件,aureport -m avc 生成统计报告。

二、常见问题处理

  1. 权限被拒绝(avc: denied)

    • audit2why 分析拒绝原因:ausearch -m avc | audit2why
    • 临时生成策略规则:ausearch -m avc | audit2allow -M my_policy,然后加载模块:sudo semodule -i my_policy.pp
  2. 服务或应用无法运行

    • 检查对应服务的SELinux上下文:ls -Z /path/to/service,确保上下文正确。
    • 临时设置为宽容模式测试:sudo setenforce 0,若问题消失则需调整策略。
  3. 策略配置错误

    • 使用 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)。

参考来源