以下是在Ubuntu上排查SELinux问题的常用方法:
查看SELinux状态
getenforce
(显示当前模式:Enforcing/Permissive/Disabled)。cat /etc/selinux/config
(确认默认策略)。检查SELinux日志
/var/log/audit/audit.log
,用以下命令过滤相关记录:sudo grep -i "denied" /var/log/audit/audit.log
。sudo tail -f /var/log/audit/audit.log | grep avc
。分析错误原因
ausearch
工具定位具体事件:sudo ausearch -m avc -ts recent
(显示最近的AVC拒绝事件)。audit2why
解释拒绝原因:sudo ausearch -m avc -ts recent | audit2why
。临时调整策略
sudo setenforce 0
(切换为Permissive模式)。SELINUX=enforcing
改为disabled
,重启生效。修复权限或策略
sudo chcon -Rv --type=httpd_sys_content_t /path/to/file
。audit2allow
):sudo ausearch -m avc -ts recent | audit2allow -M mypolicy
,然后加载策略:sudo semodule -i mypolicy.pp
。使用辅助工具
setroubleshoot
:分析日志并提供可视化建议(需安装)。semanage
:管理策略和上下文(如semanage fcontext -l
查看文件上下文规则)。注意:Ubuntu对SELinux的支持有限,部分功能可能不可用,复杂场景建议参考官方文档或考虑切换至CentOS/RHEL等原生支持SELinux的发行版。