以root用户身份运行时,如何让PHP创建具有特定组的文件?

时间:2017-09-27 01:50:08

标签: php unix posix

我有一个以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)

如何强制PHP使用正确的Gid

创建文件

附注:脚本需要能够以root用户身份运行,并且在我的方案中不能使用su - $user运行。

2 个答案:

答案 0 :(得分:1)

设置UID后向脚本添加posix_setgid($userInfo['gid']);应该可以解决问题。

答案 1 :(得分:1)

您可以在事后使用chgrp()或尝试使用相同的posix方法,但使用该组:posix_setgid()

  

函数调用的适当顺序首先是posix_setgid(),最后是posix_setuid()。