当作为root运行时,如何使用特定组使PHP创建文件



我有一个以root运行的PHP脚本。脚本创建一些文件,这些文件应由指定的用户和组拥有。我已经设法使脚本使用正确的所有者创建文件,但是,与文件关联的组仍然是root

这是我正在做的事的概念证明:

$userInfo = posix_getpwnam('eric');
posix_initgroups($userInfo['name'], $userInfo['gid']);
posix_setuid($userInfo['uid']);
file_put_contents('test.txt', 'Some content');

然后我将其运行为root:

sudo php test.php

它创建一个与根组绑定的文件:

Access: (0644/-rw-r--r--)  Uid: ( 1000/    eric)   Gid: (    0/    root)

如何强制使用正确的Gid

创建文件

旁注:脚本需要能够作为root运行,并且在我的方案中,使用su - $user运行不是一个选项。

您可以在事实之后使用CHGRP(),也可以尝试相同的POSIX方法,但使用组:posix_setgid()。

适当的函数调用顺序为posix_setgid()首先,posix_setuid()last。

设置UID后将posix_setgid($userInfo['gid']);添加到脚本中。

最新更新