我正在尝试在 /var/sandbox 中设置一个沙盒区域,应该允许更改通过网站运行的一些 php 代码。我已将其设置为沙盒文件夹具有 775 权限并分配给组“沙盒用户”,然后将组“沙盒用户”添加到“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 是否有任何理由放弃其组?有什么办法可以防止这种情况发生吗?
编辑:要为此添加另一个有趣的皱纹,如果我去终端并运行“组 www-data”,它会告诉我 www-data 始终位于沙盒用户组中,包括两个失败脚本之间的几秒钟运行给我上面列出的第二个输出(没有沙盒用户组)。