Start · Sprachen · PHP · Referenz · posix_getuid

posix_getuid

Funktion

Gibt die reale Benutzer-ID (UID) des aktuellen PHP-Prozesses zurück.

seit PHP 4.0.0 Kategorie: misc

Signatur

posix_getuid(): int

Beschreibung

posix_getuid() liefert die reale Benutzer-ID (UID) des Prozesses, unter dem das aktuelle PHP-Script ausgeführt wird. Diese ID entspricht dem Betriebssystem-Benutzer, der den Prozess gestartet hat – im Gegensatz zur effektiven UID, die durch posix_geteuid() abgerufen werden kann.

Die Funktion ist besonders nützlich, wenn ein Script prüfen soll, ob es mit bestimmten Berechtigungen läuft – beispielsweise ob es als Root (UID 0) oder als normaler Benutzer gestartet wurde. Das ist typisch in CLI-Skripten, Daemons oder Deployment-Tools, die unterschiedliches Verhalten je nach ausführendem Benutzer benötigen.

Die zurückgegebene UID kann mit posix_getpwuid() aufgelöst werden, um den zugehörigen Benutzernamen und weitere Informationen aus der Systembenutzerdatenbank zu erhalten. posix_getuid() steht nur auf POSIX-kompatiblen Systemen (Linux, macOS, BSD) zur Verfügung und ist auf Windows nicht verfügbar.

Rückgabewert

Typ
int
Beschreibung
Gibt die reale Benutzer-ID (UID) des aktuellen Prozesses als nicht-negativen Integer zurück. Unter Unix-Systemen hat Root immer die UID 0.

Beispiele

Reale UID des aktuellen Prozesses ermitteln

<?php
$uid = posix_getuid();
echo "Reale UID des Prozesses: " . $uid . PHP_EOL;

if ($uid === 0) {
    echo "Das Script läuft als Root." . PHP_EOL;
} else {
    echo "Das Script läuft als normaler Benutzer." . PHP_EOL;
}
Reale UID des Prozesses: 1000 Das Script läuft als normaler Benutzer.

UID in Benutzernamen auflösen

<?php
$uid = posix_getuid();
$userInfo = posix_getpwuid($uid);

if ($userInfo !== false) {
    echo "Benutzer-ID : " . $uid . PHP_EOL;
    echo "Benutzername: " . $userInfo['name'] . PHP_EOL;
    echo "Home-Verz.  : " . $userInfo['dir'] . PHP_EOL;
    echo "Shell       : " . $userInfo['shell'] . PHP_EOL;
} else {
    echo "Benutzerinformationen konnten nicht ermittelt werden." . PHP_EOL;
}
Benutzer-ID : 1000 Benutzername: www-data Home-Verz. : /var/www Shell : /usr/sbin/nologin

// Wichtig · Fallstricke

Plattformabhängigkeit: posix_getuid() ist ausschließlich auf POSIX-kompatiblen Systemen verfügbar (Linux, macOS, BSD). Auf Windows ist diese Funktion nicht vorhanden. Prüfe daher vor dem Einsatz mit function_exists('posix_getuid'), ob sie verfügbar ist, wenn dein Code portabel sein soll.

Unterschied zur effektiven UID: Die reale UID gibt an, wer den Prozess ursprünglich gestartet hat. Die effektive UID (posix_geteuid()) kann davon abweichen, etwa wenn das Programm über ein SUID-Bit mit erhöhten Rechten läuft. Für Berechtigungsprüfungen ist daher je nach Anwendungsfall die richtige Funktion zu wählen.

Sicherheitshinweis: Verlasse dich für sicherheitskritische Entscheidungen niemals ausschließlich auf die UID-Prüfung innerhalb des Scripts. Betriebssystem-seitige Berechtigungskonzepte sind robuster und sollten bevorzugt werden.