当PHP执行幕布函数时,Unix用户似乎正在篡夺www-data


A unix user seems to be usurping www-data when PHP executes curtain functions

我在linode上运行一个LAMP堆栈。Ubuntu版本是Lucid。

当PHP脚本执行mkdir()move_uploaded_file命令时,新创建的文件夹/文件最终归Unix用户"Grusha"所有。我确实创建了这个用户,但它不应该拥有文件。Web文件夹总体上归www-data所有,就像(通过扩展)新文件夹/文件在其中移动的包含文件夹一样。

用户的/etc/passwd 行是这样的:

grusha:x:1000:1003:,,,:/home/grusha:/bin/bash

而/etc/group 是这样的:

grusha:x:1003:

Grusha 拥有 PHP 会话,因为它们也是创建的,尽管没有别的。系统上也没有进程或文件以 Grusha 运行。

我使用公钥登录,并且通过的用户不是Grusha(也不是root)。

当我删除Grusha时,我无法再重新启动Apache。我bad username,重新启动失败。我的PHP会话也不起作用。

所以最后我再次添加 Grusha,服务器将启动并且一切正常,除了脚本制作 Grusha 拥有的文件,而不是 www-data.

我一直在尽可能多地环顾四周,但找不到任何信息。我的httpd.conf是空的。我的apache2.conf包含以下行:

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

这些变量被定义为/etc/apache2/envars中的www-data

如果有人有任何建议,我将不胜感激。

多谢埃利奥特

suPHP 模块可能已启用。它的功能是让PHP代码在拥有脚本的用户的用户ID下执行,而不是www-data,这在共享服务器上可能非常不安全。尝试通过删除 /etc/apache2/mods-enabled/suphp.load/etc/apache2/mods-enabled/suphp.conf 来关闭 suPHP。

如果这不是问题,请检查用户grusha实际上没有与www-data相同的数字用户 ID(/etc/passwd )。不过,这可能不太可能。

啊,这就解决了。 道歉。
我在/etc/apache2/sites-enabled/中有 mpm 指令,导致 apache 作为 grusha 运行。
不确定这是怎么发生的,但无论如何它都是固定的。谢谢你们俩考虑我的问题。