SELinux 阻止 Apache 启动

SELinux 阻止 Apache 启动

在严格模式下运行时,SELinux 不允许我启动 HTTPD,因为我的 mod_jk.so 模块是从外部服务器复制的。

由于我找不到安装包,所以我从外部复制了 mod_jk.so。

但是,现在,为了运行 HTTPD,我需要将 SELinux 置于 Permissive 模式。

我读到维基百科我可以添加自定义策略来允许使用这个 mod_jk.so。

这是推荐的方法吗,以便我可以使用外部 mod_jk.so 文件?

答案1

列出文件当前的安全上下文:

# ls -lrtZ /full/path/to/mod_jk.so

将输出与该路径的预期上下文进行比较:

# matchpathcon /full/path/to/mod_jk.so

恢复文件的预期安全上下文:

# restorecon -v /full/path/to/mod_jk.so

重新启动 Web 服务器并检查新的 AVC 拒绝:

# ausearch -m avc -ts recent

答案2

在安装了 HTTPD 2.4 的 Centos 7 机器上遇到了同样的问题。我花了一段时间才找到 2007 年的一份旧 Redhat 错误报告(https://bugzilla.redhat.com/show_bug.cgi?id=225452) 解决了这个问题。

解决方案(就我而言):

修改 /etc/httpd/conf.d/ 中的 jk.conf 文件,将 Shm 文件写入 /var/run/mod_jk 而不是 /var/log/httpd/mod_jk.shm,例如

JkWorkersFile /etc/httpd/conf.d/workers.properties
JkShmFile     /var/run/mod_jk
JkLogFile     /var/log/httpd/mod_jk.log
JkLogLevel    info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

无需将 SELinux 设置为宽容

答案3

通过此命令我可以mod_jk运行httpd

# grep httpd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp

相关内容