第 11 章 故障排除
下面的章节描述了 SELinux 拒绝访问时发生的情况;前三个问题的原因;在哪里可以找到有关正确标记的信息;分析 SELinux 拒绝;以及使用
audit2allow
创建自定义策略模块。
11.1. 拒绝访问时的 Happens
SELinux 决策(如允许或禁止访问)会被缓存。这个缓存被称为 Access Vector Cache(AVC)。当 SELinux 拒绝访问时,会记录拒绝消息。这些拒绝也称为 "AVC 拒绝",并记录到不同的位置,具体取决于正在运行的守护进程:
Daemon: auditd on
日志位置:
/var/log/audit/audit.log
Daemon: auditd off; rsyslogd on
日志位置:
/var/log/messages
Daemon: setroubleshootd、rsyslogd 和 auditd on
日志位置:
/var/log/audit/audit.log
.更易读的拒绝信息也会发送到 /var/log/messages
如果您正在运行 X Window 系统,则安装了 setroubleshoot 和 setroubleshoot-server 软件包,并且
setroubleshootd
和 auditd
守护进程正在运行,则 SELinux 拒绝访问时会显示一个警告:

单击
可详细分析 SELinux 拒绝访问的原因,以及允许访问的可能的解决方案。如果您没有运行 X Window 系统,SELinux 拒绝访问就不太明显。例如,浏览网站的用户可能会收到类似如下的错误:
Forbidden You don't have permission to access file name on this server
对于这些情况,如果 DAC 规则(标准 Linux 权限)允许访问,请分别检查
/var/log/messages
和 /var/log/audit/audit.log
的 "SELinux 阻止"
和 "denied"
错误。这可以通过以 root 用户身份运行以下命令来完成:
~]#
grep "SELinux is preventing" /var/log/messages
~]#
grep "denied" /var/log/audit/audit.log