用户'www-data'有时会“忘记”其组(但有时只会)

时间:2013-09-11 18:28:11

标签: php apache unix file-permissions

我正在尝试在/ var / sandbox中设置一个沙盒区域,允许通过网站运行的某些php代码进行更改。我已将其设置为沙盒文件夹具有775权限并分配给组'sandbox-users',然后将组'sandbox-users'添加到'www-data'用户配置文件中,以便可以对其进行编辑当通过Apache运行时。

然而,我正在运行的php脚本只在某些时候运行,似乎这是因为有时'www-data'会忘记它是'sandbox-users'组的一部分。我的PHP代码中有以下行:

echo shell_exec('whoami') . " | " . shell_exec('whoami | groups') . "<br>";

脚本工作的时间,我(适当地)得到输出:

www-data | www-data sandbox-users

当它不起作用时,我就回来了:

www-data | www-data

似乎没有任何模式可以在脚本工作时以及何时不工作 - 如果给定时间,它会来回切换。

有没有理由说www-data会丢弃它的组?有什么方法可以阻止这种情况吗?

编辑:为此添加另一个有趣的皱纹,如果我去终端并运行'groups www-data',它告诉我www-data总是在沙箱用户组中,包括在几秒之间两个失败的脚本运行,它给我上面列出的第二个输出(没有沙盒用户组)。

1 个答案:

答案 0 :(得分:0)

@regilero当场 - Web服务器尚未重启,一些apache进程是www-data组更改之前的遗留问题。因此,随机性取决于网页是否来自较新或较旧的流程。重新启动这些进程解决了这个问题。永远记住IT的第一条规则:重新启动并查看是否能解决问题!