So verwenden Sie den Befehl chgrp unter Linux

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.