Како користити команду цхгрп на Линуку

Na Linux sistemima, komanda chgrp služi za modifikaciju grupnog vlasništva nad fajlovima i direktorijumima. Možda se pitate zašto koristiti chgrp umesto chown? Iako je chown svestran alat, ponekad je specijalizovani alat, poput chgrp, mnogo efikasniji za specifične zadatke.

Kada je chgrp pravi izbor

chgrp je idealan kada želite da izmenite samo grupno vlasništvo nad datotekom ili direktorijumom. chown, sa druge strane, omogućava promenu i korisničkog i grupnog vlasnika. Zašto onda odabrati chgrp? Jednostavnost je ključ. Korišćenje chown samo za promenu grupnog vlasništva može biti pomalo neintuitivno i zahteva pažljivo korišćenje dvotačke („:“) u sintaksi. Greška u sintaksi može dovesti do neželjenih rezultata. Sintaksa chgrp je znatno jednostavnija, a uz to pruža i jasan ispis o izvršenim promenama.

chgrp sledi Unix princip dizajna – fokusira se na jedan zadatak i izvršava ga efikasno. Pogledajmo kako se koristi.

Promena grupnog vlasništva nad datotekom

Promena grupnog vlasništva je jednostavna, ali zahteva administratorske (sudo) privilegije. Grupe nisu u vlasništvu korisnika, pa je prebacivanje fajla ili direktorijuma iz jedne grupe u drugu privilegovana operacija. U primeru, promenićemo grupno vlasništvo nad C izvornom datotekom gc.c i dodelićemo je grupi devteam. Trenutne vrednosti vlasništva možemo proveriti pomoću komande ls -l (duga lista).

ls -l

Za promenu vlasništva, koristićemo sledeću komandu: sudo, zatim chgrp, ime nove grupe, pa ime fajla:

sudo chgrp devteam gc.c

Da bismo potvrdili izmenu, ponovo koristimo ls -l.

ls -l

Vidimo da je grupno vlasništvo promenjeno iz „dave“ u „devteam“.

Za promenu vlasništva nad više fajlova istovremeno, možemo koristiti džoker znakove. Na primer, za promenu grupnog vlasništva svih C izvornih datoteka u trenutnom direktorijumu, koristimo:

sudo chgrp devteam *.c

Proveravamo izmene pomoću ls -l:

ls -l

Sve C izvorne datoteke sada imaju grupno vlasništvo nad grupom „devteam“.

Uz opciju -c (changes), chgrp će ispisati koje izmene je napravio za svaki fajl. Pretpostavimo da smo pogrešili i da C fajlovi treba da budu u grupi „istrazivacka_laboratorija“. Ispravimo to:

sudo chgrp -c researchlab *.c

Izmene su izvršene, a svaka je ispisana, što nam omogućava da proverimo da li su promene ispravne.

Promena grupnog vlasništva nad direktorijumom

Promena grupnog vlasništva nad direktorijumom je takođe jednostavna. Koristimo sledeću naredbu za promenu vlasništva direktorijuma „backup“:

sudo chgrp -c devteam ./backup

Ova komanda menja grupno vlasništvo samog direktorijuma, ne i datoteka u njemu. Koristimo ls -l sa opcijom -d (directory) da proverimo izmenu.

ls -l -d

Grupno vlasništvo nad direktorijumom „backup“ je sada „devteam“.

Rekurzivna opcija

Ako želimo da promenimo grupno vlasništvo za sve fajlove i direktorijume u nekom direktorijumu, koristimo opciju -R (recursive). Ova opcija će omogućiti da chgrp promeni grupno vlasništvo nad svim fajlovima i poddirektorijumima u ciljnom direktorijumu. Hajde da probamo ovo sa „backup“ direktorijumom:

sudo chgrp -R devteam ./backup

Proverićemo fajlove u jednom od poddirektorijuma komandom ls, i takođe ćemo proveriti podešavanja jednog od poddirektorijuma pomoću ls -l -d.

ls -l ./backup/images
ls -l -d ./backup/images

Vidimo da je grupno vlasništvo promenjeno i za fajlove i za poddirektorijume unutar „backup“ direktorijuma.

Korišćenje referentne datoteke

Do sada smo chgrp-u direktno davali ime grupe. Moguće je i reći „postavi grupno vlasništvo ove datoteke na isto kao što ima ona druga datoteka“. Na primer, da grupno vlasništvo fajla „gc.h“ bude isto kao „gc.c“. Trenutna podešavanja „gc.c“ i „gc.h“ možemo proveriti koristeći ls -l.

ls -l gc.c
ls -l gc.h

Opcija koju koristimo je --reference. Grupno vlasništvo se kopira iz referentne datoteke u drugu datoteku. Pazite na redosled.

sudo chgrp --reference=gc.c gc.h

Koristimo ls -l da proverimo da li su podešavanja prenesena na „gc.h“.

ls -l gc.h

Datoteka „gc.h“ sada ima isto grupno vlasništvo kao i „gc.c“.

chgrp i simboličke veze

Možemo koristiti chgrp za promenu grupnog vlasništva simboličkih veza ili fajlova na koje simbolička veza ukazuje. U ovom primeru, kreirana je simbolička veza „button_link“ koja ukazuje na fajl „./backup/images/button_about.png“. Da bismo promenili grupno vlasništvo nad fajlom, koristimo opciju --dereference. Ovo će izmeniti podešavanja za fajl, a simbolička veza će ostati nepromenjena.

Proverimo podešavanja simboličke veze pomoću ls -l.

ls -l button_link

Komanda za promenu fajla je:

sudo chgrp --dereference devteam button_link

Proverićemo da li je simbolička veza nepromenjena koristeći ls -l, a zatim ćemo proveriti podešavanja vlasništva grupe za fajl.

ls -l button_link
ls -l ./backup/images/button_about.png

Simbolička veza je nepromenjena, a fajlu „button_about.png“ je izmenjeno grupno vlasništvo.

Da bismo promenili grupno vlasništvo same simboličke veze, moramo koristiti opciju --no-dereference.

Komanda je:

sudo chgrp --no-dereference devteam button_link

Koristimo ls -l da proverimo da li je novo grupno vlasništvo postavljeno za simboličku vezu.

ls -l button-link

Ovoga puta, izmenjena je sama simbolička veza, a ne fajl na koji ukazuje.

Jednostavnost je ključ

Jednostavnost je prednost. Manje stvari za pamćenje, manje konfuzije, što vodi manjem broju grešaka.