0

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

当 PHP 脚本执行mkdir()ormove_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}

这些变量定义www-data/etc/apache2/envars.

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

非常感谢,埃利奥特

4

2 回答 2

0

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

于 2012-04-10T16:04:22.100 回答
0

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

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

于 2012-04-10T00:46:25.680 回答