场景 94:Apache 的 SELinux 拒绝
故障排除步骤:
检查审计日志中的 SELinux 拒绝:
ausearch -m avc -ts recent
识别被拒绝的操作和受影响的文件。
调整文件的 SELinux 上下文:
chcon -Rv --type=httpd_sys_content_t /path/to/files
重新测试 Apache 服务。
场景 95:SELinux 阻止 MySQL 连接
故障排除步骤:
检查 SELinux 拒绝:
ausearch -m avc -ts recent
如果 MySQL 使用非标准端口,请更新 SELinux 策略:
semanage port -a -t mysqld_port_t -p tcp
重启 MySQL 并监控日志中的 SELinux 拒绝。
场景 96:SELinux 拒绝 SSH 访问
故障排除步骤:
检查 SELinux 拒绝:
ausearch -m avc -ts recent
如果问题与主目录相关,请设置正确的 SELinux 上下文:
restorecon -Rv /home/user
查看 SSH 的 SELinux 布尔值:
getsebool -a | grep ssh
如果需要,调整布尔值:
setsebool -P ssh_enabled 1
场景 97:SELinux 阻止 Nginx 反向代理
故障排除步骤:
检查 SELinux 拒绝:
ausearch -m avc -ts recent
如果 Nginx 使用非标准端口,请更新 SELinux 策略:
semanage port -a -t http_port_t -p tcp
调整 Nginx 日志或代理配置的 SELinux 上下文:
chcon -Rv --type=httpd_config_t /etc/nginx
场景 98:自定义应用程序的 SELinux 拒绝
故障排除步骤:
查看审计日志中的 SELinux 拒绝:
ausearch -m avc -ts recent
创建自定义 SELinux 策略模块:
audit2allow -a -M myapp
加载自定义模块:
semodule -i myapp.pp
重新测试自定义应用程序。
场景 99:SELinux 阻止 Sendmail
故障排除步骤:
检查审计日志中的 SELinux 拒绝:
ausearch -m avc -ts recent
如果 Sendmail 使用非标准端口,请更新 SELinux 策略:
semanage port -a -t mail_port_t -p tcp
重新加载或重启 Sendmail:
systemctl reload sendmail
场景 100:自定义文件访问的 SELinux 拒绝
故障排除步骤:
检查审计日志中的 SELinux 拒绝:
ausearch -m avc -ts recent
使用 chcon 设置文件的正确 SELinux 上下文:
chcon -Rv --type=my_custom_type /path/to/files
如果需要,更新 SELinux 策略。
场景 101:Cron 作业的 SELinux 拒绝
故障排除步骤:
查看 SELinux 拒绝:
ausearch -m avc -ts recent
如果 cron 作业访问特定文件,请调整文件上下文:
restorecon -Rv /path/to/files
如果需要,为 cron 作业创建自定义 SELinux 模块。
场景 102:Samba 共享的 SELinux 拒绝
故障排除步骤:
检查 SELinux 拒绝:
ausearch -m avc -ts recent
为 Samba 共享设置适当的 SELinux 上下文:
semanage fcontext -a -t samba_share_t "/path/to/share(/.*)?"
应用新的上下文:
restorecon -Rv /path/to/share
场景 103:Docker 容器的 SELinux 阻止
故障排除步骤:
检查 SELinux 拒绝:
ausearch -m avc -ts recent
如果 Docker 使用非标准端口,请更新 SELinux 策略:
semanage port -a -t container_port_t -p tcp
调整 Docker 相关目录的 SELinux 上下文:
chcon -Rv --type=container_file_t /var/lib/docker
总结
这些步骤涵盖了各种 SELinux 场景。始终查看日志,根据需要创建自定义策略,并使用 SELinux 工具以安全的方式进行故障排除和解决问题。