Der Befehl chgrp
unter Linux ermöglicht die Anpassung der Gruppenzugehörigkeit von Dateien und Ordnern. Warum sollte man ihn anstelle von chown
verwenden? Manchmal ist ein vielseitiges Werkzeug zwar praktisch, aber für präzise Aufgaben ist ein spezialisiertes Werkzeug oft die bessere Wahl.
Anwendungsfälle für chgrp
Der Befehl chgrp
wird eingesetzt, um die Gruppenzugehörigkeit einer Datei oder eines Verzeichnisses zu ändern. Im Gegensatz dazu erlaubt chown
die gleichzeitige Änderung des Benutzer- und Gruppenbesitzers. Warum also chgrp
verwenden?
Ein Grund ist die Einfachheit. Die Nutzung von chown
zur ausschließlichen Änderung der Gruppenzugehörigkeit kann etwas unübersichtlich sein, da man sehr genau auf die korrekte Syntax, insbesondere die Positionierung des Doppelpunkts „:“, achten muss. Ein Fehler hier kann dazu führen, dass die gewünschte Änderung nicht vorgenommen wird.
Die Syntax von chgrp
ist deutlich übersichtlicher. Zudem bietet der Befehl eine hilfreiche Option, die in klaren Worten die vorgenommenen Änderungen ausgibt.
chgrp
ist ein speziell entwickeltes Werkzeug für seine Aufgabe und verkörpert das Unix-Prinzip, ein Tool für eine spezifische Aufgabe zu verwenden und diese Aufgabe effizient zu erfüllen. Betrachten wir die Details.
Gruppenzugehörigkeit einer Datei ändern
Das Ändern der Gruppenzugehörigkeit einer Datei ist relativ einfach, erfordert jedoch die Verwendung von sudo
. Die Gruppenzugehörigkeit wird nicht vom Benutzer, sondern vom System festgelegt. Daher ist diese Aktion nicht für reguläre Benutzer zugänglich, sondern nur für Benutzer mit Root-Rechten.
Wir demonstrieren dies, indem wir die Gruppenzugehörigkeit einer C-Quelldatei mit dem Namen „gc.c“ zur Gruppe „devteam“ ändern.
Die aktuellen Eigentumsverhältnisse können wir mit dem Befehl ls -l
(lange Liste) anzeigen.
ls -l
Der Befehl zur Änderung der Gruppenzugehörigkeit lautet wie folgt: sudo
, ein Leerzeichen, chgrp
, ein Leerzeichen, der Name der neuen Gruppe, ein Leerzeichen und der Name der Datei.
sudo chgrp devteam gc.c
Um die erfolgreiche Änderung zu überprüfen, nutzen wir erneut ls -l
.
ls -l
Es ist nun ersichtlich, dass der Gruppenbesitzer von „dave“ zu „devteam“ geändert wurde.
Für eine gleichzeitige Änderung der Gruppenzugehörigkeit mehrerer Dateien können Platzhalter verwendet werden. Ändern wir die Gruppenzugehörigkeit aller C-Quelldateien im aktuellen Verzeichnis mit folgendem Befehl:
sudo chgrp devteam *.c
Die Verifizierung erfolgt wieder mit ls -l
.
ls -l
Alle C-Quelldateien im Verzeichnis haben nun die Gruppe „devteam“ als Gruppenzugehörigkeit.
Die Option -c
(changes) von chgrp
listet alle vorgenommenen Änderungen für jede Datei auf. Nehmen wir an, wir haben einen Fehler gemacht und möchten die Gruppenzugehörigkeit der C-Quelldateien stattdessen auf „researchlab“ setzen. Mit diesem Befehl beheben wir das:
sudo chgrp -c researchlab *.c
Die Änderungen werden vorgenommen und jede einzelne wird einzeln aufgeführt, wodurch man den Vorgang besser nachvollziehen kann.
Gruppenzugehörigkeit eines Verzeichnisses ändern
Genauso einfach ist die Anpassung der Gruppenzugehörigkeit eines Verzeichnisses. Der folgende Befehl ändert die Gruppenzugehörigkeit des Verzeichnisses „backup“:
sudo chgrp -c devteam ./backup
Dieser Befehl ändert jedoch ausschließlich die Gruppenzugehörigkeit des Verzeichnisses selbst und nicht die der darin enthaltenen Dateien. Mit dem Befehl ls -l -d
(Verzeichnis) können wir die Änderung bestätigen.
ls -l -d
Die Gruppenzugehörigkeit des Verzeichnisses wurde auf „devteam“ gesetzt.
Die rekursive Option
Um die Gruppenzugehörigkeit von Dateien und Unterverzeichnissen innerhalb eines Verzeichnisses zu ändern, kann die Option -R
(rekursiv) verwendet werden. Dadurch ändert chgrp
die Gruppenzugehörigkeit für alle Dateien und Unterverzeichnisse unterhalb des Zielverzeichnisses.
Wir demonstrieren dies am Verzeichnis „backup“:
sudo chgrp -R devteam ./backup
Die Dateien in einem der verschachtelten Unterverzeichnisse überprüfen wir mit ls
. Zusätzlich überprüfen wir mit ls -d
die Einstellungen eines der verschachtelten Unterverzeichnisse.
ls -l ./backup/images
ls -l -d ./backup/images
Sowohl die Dateien in den verschachtelten Unterverzeichnissen als auch die Unterverzeichnisse selbst haben nun die Gruppenzugehörigkeit geändert.
Verwendung einer Referenzdatei
Bisher haben wir chgrp
immer explizit den Namen der gewünschten Gruppe mitgeteilt. Alternativ kann man chgrp
auch anweisen, die Gruppenzugehörigkeit einer Datei basierend auf der Gruppenzugehörigkeit einer anderen Datei zu setzen.
Wir setzen die Gruppenzugehörigkeit von „gc.h“ auf den gleichen Wert wie „gc.c“.
Die aktuellen Einstellungen von „gc.c“ und „gc.h“ können wir mit ls
überprüfen.
ls -l gc.c
ls -l gc.h
Die Option --reference
ermöglicht es, die Gruppenzugehörigkeit aus einer Referenzdatei zu kopieren. Die Reihenfolge der Dateien ist hierbei wichtig.
sudo chgrp --reference=gc.c gc.h
Wir überprüfen mit ls
, ob die Einstellungen auf „gc.h“ übertragen wurden.
ls -l gc.h
Die Datei „gc.h“ hat nun die gleiche Gruppenzugehörigkeit wie „gc.c“.
Verwendung von chgrp mit symbolischen Links
chgrp
kann verwendet werden, um die Gruppenzugehörigkeit eines symbolischen Links oder der Datei, auf die der Link zeigt, zu ändern.
Für dieses Beispiel haben wir einen symbolischen Link namens „button_link“ erstellt. Dieser Link verweist auf die Datei „./backup/images/button_about.png“. Um die Gruppenzugehörigkeit der Datei zu ändern, verwenden wir die Option --dereference
. Diese Option ändert die Einstellungen der Zieldatei, während der symbolische Link unverändert bleibt.
Die Einstellungen des symbolischen Links überprüfen wir mit ls -l
.
ls -l button_link
Der Befehl zur Änderung der Datei lautet:
sudo chgrp --dereference devteam button_link
Mit ls
stellen wir sicher, dass der symbolische Link unverändert ist und überprüfen die Gruppenzugehörigkeit der Zieldatei.
ls -l button_link
ls -l ./backup/images/button_about.png
Der symbolische Link ist unverändert, aber die Gruppenzugehörigkeit der Datei „button_about.png“ wurde geändert.
Um die Gruppenzugehörigkeit des symbolischen Links selbst zu ändern, verwenden wir die Option --no-dereference
.
Der zugehörige Befehl lautet:
sudo chgrp --no-dereference devteam button_link
Wir überprüfen mit ls -l
, ob die neue Gruppenzugehörigkeit für den symbolischen Link gesetzt wurde.
ls -l button-link
In diesem Fall wurde der symbolische Link selbst geändert, nicht die Zieldatei.
Einfachheit als Vorteil
Einfachheit ist ein großer Vorteil. Sie reduziert die Komplexität, was weniger Verwirrung und damit auch weniger Fehler bedeutet.