En tant que root, comment créer des fichiers avec un groupe spécifique?

J’ai un script PHP qui s’exécute en tant que root. Le script crée des fichiers et ceux-ci doivent appartenir à un utilisateur et à un groupe spécifiés. J’ai réussi à faire en sorte que le script crée les fichiers avec le bon propriétaire, mais le groupe associé aux fichiers est toujours root .

Voici une preuve de concept pour ce que je fais:

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

Puis je l’exécute en tant que root:

 sudo php test.php 

Il crée un fichier lié au groupe racine:

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

Comment puis-je forcer PHP à créer des fichiers avec le bon Gid ?

Note: Le script doit pouvoir être exécuté en tant que root, et l’exécution avec su - $user n’est pas une option dans mon scénario.

Vous pouvez utiliser chgrp () après coup ou essayer la même méthodologie posix mais avec le groupe: posix_setgid () .

L’ordre approprié des appels de fonction est posix_setgid () en premier, posix_setuid () en dernier.

Ajouter posix_setgid($userInfo['gid']); au script après avoir défini l’UID devrait faire l’affaire.