if you're going to use this along with posix_setuid, make sure you call posix_setgid first:
<?php
define (PROC_USER, 'john');
define (PROC_GRP, 'admins');
?>
following works:
<?php
$user = posix_getpwnam( PROC_USER );
$group = posix_getgrnam( PROC_GRP);
echo posix_getuid()."\n";
echo posix_getgid()."\n";
posix_setgid($group['gid']);
posix_setuid($user['uid']);
echo posix_getuid()."\n";
echo posix_getgid()."\n";
?>
following will not set gid
<?php
$user = posix_getpwnam( PROC_USER );
$group = posix_getgrnam( PROC_GRP);
echo posix_getuid()."\n";
echo posix_getgid()."\n";
posix_setuid($user['uid']);
posix_setgid($group['gid']);
echo posix_getuid()."\n";
echo posix_getgid()."\n";
?>
posix_setgid
(PHP 4, PHP 5)
posix_setgid — Fixe le GID effectif du processus courant
Description
bool posix_setgid
( int
$gid
)Fixe le GID effectif du processus courant. C'est une fonction privilégiée et vous devez avoir les privilèges appropriés (habituellement root) sur le système pour pouvoir l'exécuter. L'ordre approprié est d'abord posix_setgid(), puis posix_setuid().
Note:
Si l'appelant est le super-utilisateur, cette fonction définira également l'ID effectif du groupe.
Liste de paramètres
-
gid -
L'ID du groupe.
Valeurs de retour
Cette fonction retourne TRUE en cas de
succès ou FALSE si une erreur survient.
Exemples
Exemple #1 Exemple avec posix_setgid()
Cet exemple affichera l'ID effectif du groupe.
<?php
echo 'Mon ID réel de groupe est : '.posix_getgid(); //20
posix_setgid(40);
echo 'Mon ID réel de groupe est : '.posix_getgid(); //40
echo 'Mon ID effectif de groupe est : '.posix_getegid(); //40
?>
Voir aussi
- posix_getgrgid() - Retourne des informations sur un groupe
- posix_getgid() - Retourne l'UID du groupe du processus courant
jac ¶
2 years ago
