У меня есть скрипт PHP, который запускается от имени пользователя root. Сценарий создает несколько файлов, и эти файлы должны принадлежать указанному пользователю и группе. Мне удалось заставить скрипт создавать файлы с правильным владельцем, однако группа, связанная с файлами, все еще 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
это не вариант в моем сценарии.
Вы могли бы использовать команда chgrp () после факта или попробуйте ту же методологию posix, но с группой: posix_setgid ().
Соответствующий порядок вызовов функций: posix_setgid () first, posix_setuid () last.
Добавление posix_setgid($userInfo['gid']);
к сценарию после того, как вы установили UID, должны сделать свое дело.