Start · Sprachen · PHP · Referenz · lchgrp

lchgrp

Funktion

Ändert die Gruppe eines symbolischen Links, ohne dem Link selbst zu folgen.

seit PHP 5.1.3 Kategorie: io

Signatur

lchgrp(string $filename, string|int $group): bool

Beschreibung

lchgrp() ändert die Gruppenbesitzung eines symbolischen Links. Im Gegensatz zu chgrp() folgt diese Funktion dem symbolischen Link nicht – das heißt, die Gruppe des Links selbst wird geändert, nicht die des Ziels, auf das der Link verweist.

Die Funktion erwartet entweder den Gruppennamen als String oder die numerische Gruppen-ID (GID) als Integer. Auf Systemen, die das POSIX-Systemaufruf lchown nicht unterstützen (z. B. Windows), liefert die Funktion false.

Für den Aufruf sind in der Regel Root-Rechte oder ausreichende Systemprivilegien erforderlich. Sie ist besonders nützlich, wenn symbolische Links selbst verwaltet werden müssen, ohne die verlinkten Dateien zu beeinflussen.

Parameter

Name Typ Default Beschreibung
$filename Pflicht string Der Pfad zum symbolischen Link, dessen Gruppe geändert werden soll.
$group Pflicht string|int Der Gruppenname (String) oder die numerische Gruppen-ID (Integer), der der symbolische Link zugewiesen werden soll.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Gruppe erfolgreich geändert wurde, andernfalls false. Auf Plattformen ohne lchown-Unterstützung (z. B. Windows) wird stets false zurückgegeben.

Beispiele

Gruppe eines symbolischen Links ändern

<?php
// Symbolischen Link erstellen
symlink('/var/www/html/target.txt', '/var/www/html/mylink');

// Gruppe des symbolischen Links auf 'www-data' setzen
if (lchgrp('/var/www/html/mylink', 'www-data')) {
    echo "Gruppe des symbolischen Links erfolgreich geändert.";
} else {
    echo "Fehler beim Ändern der Gruppe.";
}
Gruppe des symbolischen Links erfolgreich geändert.

Gruppe per numerischer GID setzen

<?php
// GID von 'www-data' ist typischerweise 33 auf Debian/Ubuntu-Systemen
$gid = 33;
$link = '/tmp/mylink';

symlink('/tmp/zieldatei.txt', $link);

if (lchgrp($link, $gid)) {
    echo "GID des Links wurde auf {$gid} gesetzt.";
} else {
    echo "Konnte die Gruppe nicht setzen – ausreichende Rechte vorhanden?";
}
GID des Links wurde auf 33 gesetzt.

// Wichtig · Fallstricke

Plattformabhängigkeit: lchgrp() ist auf Windows-Systemen nicht verfügbar und gibt dort immer false zurück. Die Funktion ist nur auf POSIX-kompatiblen Betriebssystemen (Linux, macOS, BSD) nutzbar.

Rechte: Typischerweise sind Root-Rechte notwendig, um die Gruppe eines symbolischen Links zu ändern. Gewöhnliche Benutzer können in der Regel nur die Gruppe auf eine Gruppe setzen, der sie selbst angehören.

Unterschied zu chgrp(): chgrp() folgt symbolischen Links und ändert die Gruppe der Zieldatei. lchgrp() hingegen ändert ausschließlich die Gruppe des Links selbst – das ist wichtig bei der Verwaltung von symbolischen Links in sicherheitskritischen Umgebungen.