Fatmawati Achmad Zaenuri/Shutterstock.com
Die chgrp
Befehl unter Linux ändert den Gruppenbesitz einer Datei oder eines Verzeichnisses. Warum verwenden Sie es anstelle von? chown
? Manchmal ist ein Schweizer Taschenmesser großartig, aber wenn Sie wirklich ein Skalpell brauchen, reicht nur ein Skalpell.
Wann Sie verwenden sollten chgrp
Sie verwenden die chgrp
Befehl, um den Gruppenbesitz einer Datei oder eines Verzeichnisses zu ändern. Die chown
Mit diesem Befehl können Sie den Benutzerbesitzer zum Gruppenbesitzer einer Datei oder eines Verzeichnisses ändern. Warum sollten Sie also brauchen oder verwenden? chgrp
?
Nun, zum einen ist es einfach. Verwenden von chown
Nur die Einstellung des Gruppenbesitzers zu ändern, ist ein wenig kontraintuitiv. Sie müssen sehr vorsichtig mit der Syntax sein. Es kommt auf die richtige Platzierung eines Doppelpunkts „:“ an. Wenn Sie das verlegen, nehmen Sie nicht die Änderung vor, von der Sie dachten, dass Sie sie wären.
Die Syntax von chgrp
ist insgesamt einfacher. Es hat auch eine nette Funktion, die Ihnen in einfachen Worten sagt, welche Änderungen gerade vorgenommen wurden.
Es ist ein speziell entwickeltes und dediziertes Werkzeug für die jeweilige Aufgabe. chgrp
umfasst vollständig das Unix-Designprinzip, eine Sache zu tun und sie gut zu machen. Mal sehen, was es zu bieten hat.
Ändern des Gruppeneigentums einer Datei
Das Ändern des Gruppenbesitzes einer Datei ist sehr einfach. Du musst benutzen sudo
mit chgrp
. Gruppen gehören nicht den Benutzern. Ob eine Datei oder ein Verzeichnis von einer Gruppe in eine andere verschoben wird, liegt also nicht im Ermessen des durchschnittlichen Benutzers. Das ist ein Job für jemanden mit Root-Rechten.
Wir werden den Gruppenbesitz einer C-Quelldatei namens „gc.c“ ändern. Wir werden es in die Gruppe „devteam“ ändern.
Wir können die aktuellen Eigentumswerte überprüfen, indem wir ls
mit dem -l
(lange Auflistung) Option.
ls -l
Dies ist der Befehl zum Ändern des Gruppenbesitzes. Typ sudo
, ein Leerzeichen, chgrp
, ein Leerzeichen, den Namen der Gruppe, die wir als Gruppenbesitzer festlegen werden, ein Leerzeichen und der Name der Datei.
sudo chgrp devteam gc.c
Wir überprüfen, ob die Änderung vorgenommen wurde, indem wir verwenden ls -l
nochmal.
ls -l

Wir können sehen, dass der Gruppenbesitz von „dave“ zu „devteam“ geändert wurde.
Um den Gruppenbesitz für mehrere Dateien auf einmal zu ändern, können Sie Platzhalter verwenden. Lassen Sie uns den Gruppenbesitz für alle C-Quelldateien im aktuellen Verzeichnis ändern. Wir werden diesen Befehl verwenden:
sudo chgrp devteam *.c
Wir können überprüfen, ob die Änderung wie erwartet vorgenommen wurde, indem wir verwenden ls -l
.
ls -l

Alle C-Quelldateien in diesem Verzeichnis wurden geändert, sodass ihr Gruppenbesitz „devteam“ ist.
Durch die Verwendung der -c
(Änderungen) Option chgrp
listet die Änderungen auf, die es an jeder Datei vorgenommen hat. Angenommen, wir haben einen Fehler gemacht, wir wollten, dass die Gruppeneigentümerschaft der C-Quelldateien auf „researchlab“ gesetzt wird. Lass uns das jetzt korrigieren. Wir verwenden diesen Befehl:
sudo chgrp -c researchlab *.c

Die Änderungen werden für uns vorgenommen und jede einzelne wird so aufgelistet, wie sie geschieht, sodass wir überprüfen können, ob die von uns geänderten Änderungen richtig sind.
Ändern des Gruppenbesitzes eines Verzeichnisses
Ebenso einfach ist es, den Gruppenbesitz eines Verzeichnisses zu ändern. Mit diesem Befehl können wir den Gruppenbesitz für das Verzeichnis „backup“ ändern.
sudo chgrp -c devteam ./backup
Um es klarzustellen, dieser Befehl ändert den Gruppenbesitz des Verzeichnisses selbst, nicht die Dateien im Verzeichnis. Wir werden verwenden ls -l
mit dem -d
(Verzeichnis) Option, um zu überprüfen, ob dies der Fall ist.
ls -l -d

Der Gruppenbesitz des Verzeichnisses selbst wurde in „devteam“ geändert.
Die rekursive Option
Wenn wir den Gruppenbesitz für die in einem Verzeichnis gespeicherten Dateien und Verzeichnisse ändern möchten, können wir das -R
(rekursive) Option. Dies wird verursachen chgrp
um den Gruppenbesitz für alle Dateien und Unterverzeichnisse unterhalb des Zielverzeichnisses zu ändern.
Versuchen wir dies mit dem Verzeichnis „backup“. Hier ist der Befehl:
sudo chgrp -R devteam ./backup
Wir überprüfen das in einem der verschachtelten Unterverzeichnisse mit dem ls
Befehl, und wir überprüfen auch die Einstellungen eines der verschachtelten mit ls
.
ls -l ./backup/images
ls -l -d ./backup/images

Wir können sehen, dass sich der Gruppenbesitz sowohl für die Dateien in den verschachtelten Unterverzeichnissen als auch für die verschachtelten Unterverzeichnisse geändert hat.
Verwenden einer Referenzdatei
Bisher haben wir es explizit gesagt chgrp
der Name der Gruppe, die wir verwenden möchten. Wir können auch verwenden chgrp
auf die Art und Weise, wie «Setzen Sie den Gruppenbesitz der Datei auf den gleichen Gruppenbesitz wie die Datei».
Lassen Sie uns den Gruppenbesitz von «gc.h» auf den gleichen Wert wie «gc.c» setzen.
Die aktuellen Einstellungen von „gc.c“ und „gc.h“ können wir mit überprüfen ls
.
ls -l gc.c
ls -l gc.h
Die Option, die wir verwenden müssen, ist die --reference
Möglichkeit. Das Gruppeneigentum wird von der Referenzdatei in die andere Datei kopiert. Achten Sie darauf, die Dateien richtig herum zu bekommen.
sudo chgrp --reference=gc.c gc.h
Wir werden verwenden ls
um zu überprüfen, ob die Einstellungen auf „gc.h.“ übertragen wurden.
ls -l gc.h

Die Datei „gc.h“ hat jetzt denselben Gruppenbesitz wie „gc.c“.
Verwenden von chgrp mit symbolischen Links
Wir können benutzen chgrp
um den Gruppenbesitz von symbolischen Links oder der Datei, auf die der symbolische Link zeigt, zu ändern.
Für dieses Beispiel haben wir a . erstellt symbolischer Link namens «button_link». Dies verweist auf eine Datei namens „./backup/images/button_about.png“. Um den Gruppenbesitz der Datei zu ändern, müssen wir den --dereference
Möglichkeit. Dadurch werden die Einstellungen für die Datei geändert und der symbolische Link bleibt unverändert.
Lassen Sie uns die Einstellungen für den symbolischen Link mit überprüfen ls -l
.
ls -l button_link
Der Befehl zum Ändern der Datei lautet:
sudo chgrp --dereference devteam button_link
Wir überprüfen mit ls, ob der symbolische Link unverändert ist, und überprüfen auch die Gruppenbesitzeinstellungen für die Datei.
ls -l button_link
ls -l ./backup/images/button_about.png

Der symbolische Link ist unverändert und die Gruppeneigenschaft der Datei „button_about.png“ wurde geändert.
Um den Gruppenbesitz des symbolischen Links selbst zu ändern, müssen wir die --no-dereference
Möglichkeit.
Der zu verwendende Befehl lautet:
sudo chgrp --no-dereference devteam button_link
Wir werden verwenden ls -l
um zu überprüfen, ob der neue Gruppenbesitz für den symbolischen Link festgelegt wurde.
ls -l button-link

Diesmal war das betroffene Element der symbolische Link selbst, nicht die Datei, auf die er verweist.
Schön und einfach
Einfach ist gut. Es bedeutet, dass es weniger zu erinnern und weniger zu verwechseln ist. Das sollte weniger Fehler bedeuten.