Start · Sprachen · PHP · Referenz · posix_getgrgid

posix_getgrgid

Funktion

Gibt Informationen über eine Unix-Gruppe anhand ihrer numerischen Gruppen-ID (<code>GID</code>) zurück.

seit PHP 4.0.0 Kategorie: misc

Signatur

posix_getgrgid(int $group_id): array|false

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

Typ
array|false
Beschreibung
Bei Erfolg ein assoziatives Array mit den Schlüsseln 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;
}
Gruppen-ID : 1000 Gruppenname : www-data Mitglieder : alice, bob

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)
root www-data 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.