Unter Linux ist jede Datei einem Eigentümer und einer Gruppe zugeordnet und verfügt über Berechtigungen, die festlegen, welche Benutzer die Datei lesen, schreiben oder ausführen dürfen.
In diesem Artikel wird die Verwendung von chgrp
erläutert Befehl, um den Gruppenbesitz bestimmter Dateien zu ändern.
chgrp
Befehlssyntax #
Die chgrp
Der Befehl hat folgende Form:
chgrp [OPTIONS] GROUP FILE..
GROUP
, Name der neuen Gruppe oder die Gruppen-ID (GID). Der numerischen GID muss+
vorangestellt werden Symbol.FILE..
, Name einer oder mehrerer Dateien.
Im Gegensatz zum chown
Befehl, mit dem Sie den Benutzer- und Gruppenbesitz ändern können, chgrp
ändert nur die Eigentümerschaft der Gruppe.
Um herauszufinden, zu welcher Gruppe die Datei gehört, verwenden Sie den ls -l
Befehl.
Normale Benutzer können die Gruppe der Datei nur ändern, wenn sie Eigentümer der Datei sind, und nur zu einer Gruppe, in der sie Mitglied sind. Administratoren können den Gruppenbesitz aller Dateien ändern.
So ändern Sie den Besitz der Dateigruppe #
Um den Gruppenbesitz einer Datei oder eines Verzeichnisses zu ändern, rufen Sie chgrp
auf Befehl gefolgt vom neuen Gruppennamen und der Zieldatei als Argumente.
Zum Beispiel, um die Gruppe der Datei filename
zu ändern zu www-data
Sie würden Folgendes ausführen:
chgrp www-data filename
Wenn Sie den Befehl mit einem nicht privilegierten Benutzer ausführen, erhalten Sie den Fehler „Vorgang nicht zulässig“. Um die Fehlermeldung zu unterdrücken, rufen Sie den Befehl mit dem -f
auf Möglichkeit. Standardmäßig, bei Erfolg, chgrp
erzeugt keine Ausgabe und gibt Null zurück.
Sie können auch mehrere Dateien als Argumente an chgrp
übergeben Befehl:
chgrp www-data file1 file2 dir1
Verwenden Sie das -v
Option, um Informationen über die verarbeiteten Dateien zu erhalten:
chgrp www-data file1 file2
changed group of 'file1' from nginx to www-data
group of 'file2' retained as www-data
Um nur Informationen über die Dateien auszugeben, deren Gruppe sich tatsächlich ändert, verwenden Sie -c
statt -v
.
Anstelle des Benutzernamens kann auch die numerische Gruppen-ID (GID) verwendet werden. Das folgende Beispiel ändert den Gruppenbesitz der Datei in eine neue Gruppe mit der GID 1000:
chgrp +1000 filename
So ändern Sie den Besitz der Symlinks-Gruppe #
Wenn nicht rekursiv gearbeitet wird, ist das Standardverhalten von chgrp
Der Befehl besteht darin, den Gruppenbesitz der Symlink-Ziele zu ändern, nicht die symbolischen Links selbst.
Wenn Sie beispielsweise versuchen, die Gruppe des symbolischen Links symlink1
zu ändern das zeigt auf /opt/file1
, chgrp
ändert den Eigentümer der Datei oder des Verzeichnisses, auf das der symbolische Link zeigt:
chgrp www-data symlink1
Die Chancen stehen gut, dass Sie, anstatt die Zielgruppe zu ändern, den Fehler „cannot dereference ‚symlink1‘:Permission denied“ erhalten.
Der Fehler tritt auf, weil bei den meisten Linux-Distributionen symbolische Links standardmäßig geschützt sind und Sie nicht mit Zieldateien arbeiten können. Diese Option wird in /proc/sys/fs/protected_symlinks
angegeben . 1
bedeutet aktiviert und 0
behindert. Wir empfehlen, den Symlink-Schutz nicht zu deaktivieren.
Um den Gruppenbesitz des Symlinks selbst zu ändern, verwenden Sie -h
Möglichkeit:
chgrp -h www-data symlink1
Wie man die Gruppeneigentümerschaft rekursiv ändert #
Um den Gruppenbesitz aller Dateien und Verzeichnisse in einem bestimmten Verzeichnis rekursiv zu ändern, verwenden Sie -R
Option.
Beispielsweise ändert der folgende Befehl den Besitz aller Dateien und Verzeichnisse unter /var/www
Verzeichnis zu den www-data
Gruppe:
chgrp -R www-data /var/www
Wenn die rekursive Option angegeben ist chgrp
wird die symbolischen Links nicht durchqueren und keine Änderungen an den symbolischen Links vornehmen. Um den Gruppenbesitz der symbolischen Links zu ändern, übergeben Sie -h
Möglichkeit:
chgrp -hR www-data /var/www
Andere Optionen, die verwendet werden können, wenn der Gruppenbesitz rekursiv geändert wird, sind -H
und -L
.
Wenn das Argument an chgrp
übergeben wird Befehl ist ein symbolischer Link, der -H
Option bewirkt, dass der Befehl sie durchquert. -L
sagt chgrp
um jeden symbolischen Link zu einem gefundenen Verzeichnis zu durchlaufen. In den meisten Fällen sollten Sie diese Optionen nicht verwenden, da Sie Ihr System durcheinander bringen oder ein Sicherheitsrisiko darstellen könnten.
Schlussfolgerung #
chgrp
ändert den Gruppenbesitz von Dateien, Verzeichnissen und symbolischen Links.
Obwohl Sie das beliebtere chown
verwenden können Befehl zum Ändern der Gruppe, chgrp
hat eine einfache Syntax, die leicht zu merken ist.
Weitere Informationen zu chgrp
Befehl, rufen Sie die chgrp-Manpage auf oder geben Sie man chgrp
ein in Ihrem Terminal.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.