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


User 'www-data' is sometimes 'forgetting' its groups (but only sometimes)

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

但是,我运行的 php 脚本只在某些时候起作用,这似乎是因为有时"www-data"会忘记它是"沙盒用户"组的一部分。我的 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 始终在沙盒用户组中,包括在两次失败的脚本运行之间的几秒钟内,给我上面列出的第二个输出(没有沙盒用户组)。

@regilero是正确的 - Web服务器尚未重新启动,并且某些Apache进程是www-data组更改之前的遗留问题。因此,随机性基于网页是从较新还是较旧的进程提供服务。重新启动这些进程解决了此问题。永远记住IT的第一条规则:重新启动,看看是否能解决它!