Centos Apache 2.4 使用 chmod 0444 执行 suphp bin

Centos Apache 2.4 使用 chmod 0444 执行 suphp bin

我已经卡在这个问题上好几天了,几年来我一直在 VPS(OVH)上的 Centos 6 上使用 suPHP 和 Apache 2.4,从周日开始,二进制 chmod 总是恢复为 0444,所以它无法执行并抛出 500。当我使用 chmod 4750 将网站用户组设置为它或使用 chmod 4755 将“nobody”组设置为它时,它可以正常工作,但 chmod 总是在 1 或 2 小时甚至 30 分钟后通过某个过程恢复,我迷路了!

我知道 suphp mod Apache 需要很多要求才能正常工作,我认为一切都很好,因为它运行了一段时间,直到二进制 chmod 恢复为 0444。我也尝试复制这个使用过的 php 版本文件夹,同样,它工作了几分钟,然后它的 chmod 就改变了。

如果 php-cgi 二进制文件本身的 chmod 被强制为 chmod 0444 (所有者为 root,组为 apache 或 website),那么如何正确运行它,即使通过“nobody”(apache)或“website”用户?

通常(以前)suphp 二进制文件会获得 chmod 755 来运行......

非常感谢您的帮助!

答案1

常规服务器操作(例外:使用 php 作为 apache 模块)文件权限设置为 644,文件归您所有。大多数服务器现在运行 php-as-cgi 或等效程序,并使用某个版本的“su”来允许 httpd 进程正常运行,而无需所有权,因此不存在权限问题。

实际问题:许多地方都有硬编码的文件系统权限,覆盖了共享环境的非默认 umask。

确保 Joomla 没有使用 umask 函数来定义它创建的文件的权限(检查您的 umask 设置,etc/init/php-fpm.conf)。

为了测试目的,请尝试使用备用 PHP 脚本来查看是否遇到相同的行为。

尝试将 umask 更改/usr/local/apache/bin/envvars为您想要的值,然后服务器上创建的任何文件都应该具有新的权限。

相关内容