Start · Sprachen · PHP · Referenz · posix_geteuid

posix_geteuid

Funktion

Gibt die effektive Benutzer-ID (EUID) des aktuellen PHP-Prozesses als Integer zurück.

seit PHP 4.0.0 Kategorie: misc

Signatur

posix_geteuid(): int

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

Typ
int
Beschreibung
Gibt die effektive Benutzer-ID des aktuellen Prozesses als vorzeichenlose Ganzzahl zurück. Der 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;
}
Effektive Benutzer-ID: 1000

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;
}
Prozess läuft als: www-data (EUID 33)

// 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.