Signatur
Beschreibung
posix_geteuid() liefert die effektive Benutzer-ID (Effective User ID, EUID) des laufenden PHP-Prozesses. Die EUID bestimmt, welche Berechtigungen der Prozess beim Zugriff auf Ressourcen (Dateien, Sockets usw.) tatsächlich besitzt – sie kann von der realen Benutzer-ID (RUID) abweichen, etwa wenn ein Prozess mit setuid gestartet wurde.
Typische Einsatzszenarien sind Sicherheitsprüfungen in CLI-Skripten: Ein Skript kann so z. B. prüfen, ob es als root (UID 0) ausgeführt wird, bevor es privilegierte Operationen durchführt, oder ob es unter dem erwarteten Systembenutzer läuft.
Die Funktion gehört zur POSIX-Erweiterung und steht daher ausschließlich auf POSIX-konformen Systemen (Linux, macOS, BSD u. Ä.) zur Verfügung. Unter Windows ist sie nicht verfügbar. Die Erweiterung muss bei der PHP-Kompilierung mit --enable-posix aktiviert worden sein.
Zum Ermitteln der realen Benutzer-ID steht posix_getuid() zur Verfügung; die zugehörigen Benutzerinformationen liefert posix_getpwuid().
Rückgabewert
0 steht für den Superuser root.Beispiele
Prüfen, ob das Skript als root ausgeführt wird
<?php
if (!function_exists('posix_geteuid')) {
die('POSIX-Erweiterung nicht verfügbar.');
}
$euid = posix_geteuid();
if ($euid === 0) {
echo 'Skript läuft als root (EUID 0) – Vorsicht!' . PHP_EOL;
} else {
echo 'Effektive Benutzer-ID: ' . $euid . PHP_EOL;
}
EUID mit Benutzername ausgeben
<?php
$euid = posix_geteuid();
$pwInfo = posix_getpwuid($euid);
if ($pwInfo !== false) {
printf(
'Prozess läuft als: %s (EUID %d)' . PHP_EOL,
$pwInfo['name'],
$euid
);
} else {
echo 'Kein Benutzer zur EUID ' . $euid . ' gefunden.' . PHP_EOL;
}
// Wichtig · Fallstricke
Sicherheitshinweis: Der Rückgabewert 0 bedeutet, dass der Prozess mit vollen Root-Rechten läuft. Skripte, die potenziell vom Web aufgerufen werden können, sollten niemals als root betrieben werden. Prüfen Sie die EUID in sicherheitskritischen CLI-Tools, um unbeabsichtigte Privilegieneskalation zu verhindern.
Plattform: Die Funktion ist nur unter POSIX-Systemen verfügbar. Ein vorheriger Aufruf von function_exists('posix_geteuid') ist empfehlenswert, wenn portabler Code angestrebt wird.
Die effektive UID kann sich von der realen UID unterscheiden, wenn posix_seteuid() aufgerufen wurde oder das ausführende Binary das setuid-Bit gesetzt hat.