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 — Setzt die Gruppen-ID des aktuellen Prozesses
Beschreibung
$gid
)
Setzt die reale Gruppen-ID gid des aktuellen
Prozesses. Es handelt sich um eine privilegierte Funktion, die
entsprechende Berechtigungen (normalerweise root) auf dem System benötigt,
damit sie ausgeführt werden kann. Die sachgemäße Reihenfolge der
Funktionsaufrufe ist zuerst posix_setgid() und zuletzt
posix_setuid().
Hinweis:
Falls die Funktion von einem Superuser aufgerufen wurde, setzt sie auch die effektive Gruppen-ID.
Parameter-Liste
-
gid -
Die Gruppen-ID
Rückgabewerte
Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.
Beispiele
Beispiel #1 posix_setgid()-Beispiel
Dieses Beispiel gibt die effektive Gruppen-ID aus, nachdem sie geändert wurde.
<?php
echo 'Meine reale Gruppen-ID ist '.posix_getgid(); //20
posix_setgid(40);
echo 'Meine reale Gruppen-ID ist '.posix_getgid(); //20
echo 'Meine effektive Gruppen-ID ist '.posix_getegid(); //40
?>
Siehe auch
- posix_getgrgid() - Liefert zu einer Gruppen-ID Informationen über diese Gruppe
- posix_getgid() - Liefert die reale Gruppen-ID des aktuellen Prozesses
