排查SELinux故障
你终有一天会被 SELinux 阻止你访问所需的东西,而且要解决这个问题。SELinux 拒绝某个文件、进程或资源被访问的基要原因有数个:
1 一个被错误标签的文件
2 一个进程在错误的 SELinux 安全性脉络下运行
3 政策出错。某个进程要访问一个在编写政策时意料不到的文件,并产生错误信息
4 一个入侵的企图。
头三个情况我们可以处理,而第四个正正是预期的表现。
先安装setroubleshoot 组件。有的资料说他是默认安装的,但在我的CentOS5.5上没有。
yum install setroubleshoot
日志档是排除任何疑难的关键,而 SELinux 亦不例外。SELinux 缺省会通过 Linux 审计系统(auditd)将日志写在 /var/log/audit/audit.log 内,而这项务服缺省为启用的。假若 auditd 并未运行,信息将会被写进 /var/log/messages。SELinux 的日志都被标签有 AVC 这个关键字,方便它们从其它信息中过滤出来。
由 CentOS 5 起,你可以用 SELinux 排除疑难工具协助你分析日志档,将它们转换为供人阅读的格式。这个工具包含一个以可读格式显示信息及解决方案的图像界面、一个桌面通报图示、与及一个长驻进程(setroubleshootd),它负责查阅新的 SELinux AVC 警告并传送至通报图示(不运行 X 服务器的话可设置以电邮通报)。SELinux 排除疑难工具是由 setroubleshoot 组件所提供,并缺省会被安装。这个工具可以从「系统」选单或命令行引导:
sealert -b
不运行 X 服务器的人可以通过命令行产生供人阅读的报告:
sealert -a /var/log/audit/audit.log > /path/to/mylogfile.txt