Signatur
Beschreibung
posix_getgrgid() sucht im System-Gruppenverzeichnis (z. B. /etc/group) nach einem Eintrag, dessen GID mit dem übergebenen Wert übereinstimmt, und liefert die Gruppeninformationen als assoziatives Array zurück. Die Funktion steht nur auf POSIX-kompatiblen Betriebssystemen (Linux, macOS, BSD usw.) zur Verfügung.
Das zurückgegebene Array enthält die Schlüssel name (Gruppenname als String), passwd (verschlüsseltes Passwort, meist x oder leer), gid (numerische GID) sowie members (Array aller Benutzernamen, die explizit in der Gruppe eingetragen sind).
Typische Einsatzgebiete sind Systemverwaltungs-Skripte, die Dateiberechtigungen prüfen, Prozessberechtigungen auslesen oder den Gruppenkontext eines laufenden Prozesses anzeigen sollen. In Kombination mit posix_getegid() lässt sich so der Name der effektiven Gruppe des aktuellen Prozesses ermitteln.
Gibt die Funktion false zurück, existiert keine Gruppe mit der angegebenen GID oder die POSIX-Erweiterung steht nicht zur Verfügung. Fehlerdetails können über posix_get_last_error() und posix_strerror() abgefragt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $group_id Pflicht | int | Die numerische Gruppen-ID (GID), zu der Informationen abgerufen werden sollen. Typischerweise ein Wert aus posix_getgid() oder posix_getegid(). |
Rückgabewert
name (string), passwd (string), gid (int) und members (array). Gibt false zurück, wenn keine Gruppe mit der angegebenen GID gefunden wurde oder ein Fehler auftrat.Beispiele
Gruppenname der effektiven Gruppe des aktuellen Prozesses ermitteln
<?php
// Effektive Gruppen-ID des aktuellen Prozesses ermitteln
$gid = posix_getegid();
// Gruppeninformationen anhand der GID abrufen
$groupInfo = posix_getgrgid($gid);
if ($groupInfo !== false) {
echo 'Gruppen-ID : ' . $groupInfo['gid'] . PHP_EOL;
echo 'Gruppenname : ' . $groupInfo['name'] . PHP_EOL;
echo 'Mitglieder : ' . implode(', ', $groupInfo['members']) . PHP_EOL;
} else {
$errno = posix_get_last_error();
echo 'Fehler: ' . posix_strerror($errno) . PHP_EOL;
}
Prüfen, ob eine bestimmte GID einer bekannten Gruppe entspricht
<?php
function getGroupName(int $gid): string
{
$info = posix_getgrgid($gid);
return $info !== false ? $info['name'] : 'Unbekannte Gruppe (' . $gid . ')';
}
// Beispielaufruf
echo getGroupName(0) . PHP_EOL; // root
echo getGroupName(33) . PHP_EOL; // www-data (je nach System)
echo getGroupName(9999999) . PHP_EOL; // Unbekannte Gruppe (9999999)
// Wichtig · Fallstricke
Plattformverfügbarkeit: Die Funktion ist nur auf POSIX-Systemen verfügbar (Linux, macOS, BSD). Unter Windows steht sie nicht zur Verfügung; dort liefert ein Aufruf einen fatalen Fehler oder ist schlicht nicht definiert.
Erweiterung: Die posix-Extension muss kompiliert bzw. geladen sein (extension=posix). In manchen PHP-Builds ist sie standardmäßig nicht aktiviert.
Sicherheit: Da Gruppeninformationen aus dem Systemverzeichnis kommen, sollten keine unsanitisierten Nutzereingaben direkt als GID übergeben werden. Obwohl die Funktion selbst keine Kommandos ausführt, können die zurückgegebenen Daten (z. B. Gruppenname) bei unkritischer Weiterverarbeitung zu Information-Disclosure führen.