(13)Apache CGI 尝试时权限被拒绝

(13)Apache CGI 尝试时权限被拒绝

我最近升级了我的 Apache2 服务器,现在无法运行 CGI 应用程序。我的日志显示

(13)权限被拒绝,多次尝试后仍无法连接到 cgi 守护进程

我理解该错误信息意味着 Apache 被拒绝了对某些文件的某些权限,而我不知道如何追踪和解决这个问题。

错误消息中提到的文件真的是被阻止的文件吗?或者问题可能是由其他所需文件引起的?.cgi 文件就在它原来的位置,即 /usr/share 下。文件所有权(root)和权限(全局可读/可执行)与该文件及其祖先的所有权和权限相同。SELinux 文件标签未发生改变。

SELinux 审计日志未显示与 Apache 或 CGI 程序相关的拒绝。在 donotaudit 情况下,我启用了审计,但仍然没有看到任何内容。我短暂地将 SELinux 切换到宽容模式,但无济于事。我甚至尝试在宽容模式下重新启动 Apache。这并没有解决问题。

关于如何解决这个问题有什么建议吗?我很想恢复到旧版 Apache。

答案1

可能会或可能不会起作用,似乎不太可能,但有人遇到了类似的问题,这就是解决方案;

chmod 755 /var/log/httpd/或者您服务器上 apache 日志的目录。

http://www.mail-archive.com/[电子邮件保护]/msg00585.html

答案2

确认您有以下设置00-mpm.conf

/etc/httpd/conf.modules.d/00-mpm.conf

并注释掉mod_mpm_prefork配置文件 然后评论mod_mpm_worker配置文件模块

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
#LoadModule mpm_event_module modules/mod_mpm_event.so

答案3

虽然这是一个老问题,但我想我还是会添加我的答案,因为我在互联网上很难找到适当的解释或解决方案。

我只在使用事件 MPM(prefork MPM 工作正常)时在装有 Apache 2.4(作为 httpd24 包安装)的 RHEL 7 上遇到过此问题。SELinux 已设置为宽容。

根据有关 CGI 套接字的评论,我查看了文档:

本质上,使用 mpm-event 时,CGI 守护程序需要一个套接字文件。由于 Apache 在我的服务器上以用户 apache 和组 apache 运行(毫无疑问,许多其他服务器上也是如此),因此包含此套接字文件的文件夹必须具有 apache.apache 的读写权限。

由于不想覆盖日志文件夹权限,我选择ScriptSock在以下位置明确设置指令conf.modules.d/00-mpm.conf

ScriptSock /var/run/httpd/cgid.sock

然后我确保httpd目录存在(注意:您需要通过 进行配置tmpfiles.d,就像/var/runtmpfs 一样),并将所有权更改为 apache.apache。权限保留为默认的 755。

这为我解决了这个问题。

答案4

在 apache 升级过程中,模块行为发生了变化。您的 apache conf 指令可能需要进行一些更改才能正确提供 cgi。如果不知道 apache conf 和 cgi 的详细信息以及它在文件系统上的位置,就很难做出除了猜测之外的更多决定。

此外,如果您确实怀疑 SELinux,请尝试禁用它,看看 apache 是否再次开始提供 CGI。如果是这样,那么您可以开始集中精力调整策略以允许您尝试执行的操作,或者让您的系统符合 SELinux 策略。

相关内容