我正在尝试在/ 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总是在沙箱用户组中,包括在几秒之间两个失败的脚本运行,它给我上面列出的第二个输出(没有沙盒用户组)。
答案 0 :(得分:0)
@regilero当场 - Web服务器尚未重启,一些apache进程是www-data组更改之前的遗留问题。因此,随机性取决于网页是否来自较新或较旧的流程。重新启动这些进程解决了这个问题。永远记住IT的第一条规则:重新启动并查看是否能解决问题!