chgrp-kommandoen på Linux endrer gruppeeierskapet til en fil eller katalog. Hvorfor bruke det i stedet for chown? Noen ganger er en sveitsisk hærkniv flott, men når du virkelig trenger en skalpell, er det bare en skalpell som duger.
Innholdsfortegnelse
Når du bør bruke chgrp
Du bruker chgrp-kommandoen til å endre gruppeeierskap til en fil eller katalog. Med chown-kommandoen kan du endre brukereier og gruppeeier av en fil eller katalog. Så hvorfor skulle du trenge eller bruke chgrp?
Vel, for det første er det enkelt. Det er litt motintuitivt å bruke chown for å endre bare gruppeeierinnstillingen. Du må være veldig forsiktig med syntaksen. Det avhenger av riktig plassering av et kolon «:». Forlagt det, og du gjør ikke den endringen du trodde du var.
Syntaksen til chgrp er helt greiere. Den har også en fin funksjon som forteller deg på en enkel måte hvilke endringer den nettopp har gjort.
Det er et spesialbygd og dedikert verktøy for oppgaven. chgrp omfavner fullstendig Unix-designprinsippet om å gjøre én ting og gjøre det bra. La oss se hva den har å tilby.
Endre gruppeeierskap for en fil
Å endre gruppeeierskap til en fil er veldig enkelt. Du må bruke sudo med chgrp. Grupper eies ikke av brukere, så om en fil eller katalog flyttes fra en gruppe til en annen er ikke en avgjørelse som ligger hos den gjennomsnittlige brukeren. Det er en jobb for noen med root-privilegier.
Vi kommer til å endre gruppeeierskapet til en C-kildefil kalt «gc.c.» Vi kommer til å endre den til «devteam»-gruppen.
Vi kan sjekke gjeldende eierskapsverdier ved å bruke ls med alternativet -l (lang liste).
ls -l
Dette er kommandoen for å endre gruppeeierskap. Skriv sudo, et mellomrom, chgrp , et mellomrom, navnet på gruppen vi skal angi som gruppeeier, et mellomrom og navnet på filen.
sudo chgrp devteam gc.c
Vi kontrollerer at endringen er gjort ved å bruke ls -l igjen.
ls -l
Vi kan se at gruppeeierskapet er endret fra «dave» til «devteam».
For å endre gruppeeierskap for et sett med filer samtidig, kan du bruke jokertegn. La oss endre gruppeeierskapet for alle C-kildefilene i gjeldende katalog. Vi vil bruke denne kommandoen:
sudo chgrp devteam *.c
Vi kan sjekke at endringen er gjort slik vi forventet ved å bruke ls -l.
ls -l
Alle C-kildefilene i denne katalogen er endret slik at gruppeeierskapet deres er «devteam.»
Ved å bruke -c (endringer) alternativet vil chgrp liste endringene den har gjort i hver fil. Anta at vi gjorde en feil, ville vi at C-kildefilene skulle ha gruppeeierskapet satt til «researchlab.» La oss rette det nå. Vi bruker denne kommandoen:
sudo chgrp -c researchlab *.c
Endringene er gjort for oss, og hver av dem er listet opp etterhvert som det skjer, slik at vi kan bekrefte at det vi har endret er riktig.
Endre gruppeeierskap til en katalog
Det er like enkelt å endre gruppeeierskap til en katalog. Vi kan bruke denne kommandoen til å endre gruppeeierskap for katalogen «backup.»
sudo chgrp -c devteam ./backup
For å være tydelig, vil denne kommandoen endre gruppeeierskapet til selve katalogen, ikke filene inne i katalogen. Vi vil bruke ls -l med alternativet -d (katalog) for å bekrefte at dette er tilfelle.
ls -l -d
Gruppeeierskapet til selve katalogen er endret til «devteam.»
Det rekursive alternativet
Hvis vi ønsker å endre gruppeeierskap for filene og katalogene som er lagret i en katalog, kan vi bruke alternativet -R (rekursivt). Dette vil føre til at chgrp endrer gruppeeierskap for alle filer og underkataloger under målkatalogen.
La oss prøve dette med «backup»-katalogen. Her er kommandoen:
sudo chgrp -R devteam ./backup
Vi vil gjennomgå filene i en av de nestede underkatalogene med ls-kommandoen, og vi vil også sjekke innstillingene til en av de nestede underkatalogene ved å bruke ls .
ls -l ./backup/images
ls -l -d ./backup/images
Vi kan se at gruppeeierskapet er endret både for filene i de nestede underkatalogene og for de nestede underkatalogene.
Bruke en referansefil
Så langt har vi eksplisitt fortalt chgrp navnet på gruppen vi ønsker å bruke. Vi kan også bruke chgrp på en måte som sier «sett gruppeeierskapet til denne filen til samme gruppeeierskap som den filen.»
La oss sette gruppeeierskapet til «gc.h» til å være det samme som «gc.c».
Vi kan sjekke gjeldende innstillinger for «gc.c» og «gc.h» ved å bruke ls.
ls -l gc.c
ls -l gc.h
Alternativet vi må bruke er –referansealternativet. Gruppeeierskapet kopieres fra referansefilen til den andre filen. Pass på å få filene på riktig måte.
sudo chgrp --reference=gc.c gc.h
Vi bruker ls for å sjekke at innstillingene er overført til «gc.h.»
ls -l gc.h
Filen «gc.h» har nå samme gruppeeierskap som «gc.c.»
Bruke chgrp med symbolske lenker
Vi kan bruke chgrp til å endre gruppeeierskap til symbolske lenker, eller til filen som den symbolske lenken viser til.
For dette eksemplet har vi laget en symbolsk lenke kalt «button_link». Dette peker på en fil kalt «./backup/images/button_about.png.» For å endre gruppeeierskap til filen, må vi bruke alternativet –dereference. Dette vil endre innstillingene for filen og la den symbolske lenken være uendret.
La oss sjekke innstillingene for den symbolske lenken ved å bruke ls -l.
ls -l button_link
Kommandoen for å endre filen er:
sudo chgrp --dereference devteam button_link
Vi kontrollerer at den symbolske lenken er uendret ved hjelp av ls, og vi vil også sjekke gruppeeierskapsinnstillingene for filen.
ls -l button_link
ls -l ./backup/images/button_about.png
Den symbolske lenken er uendret, og «button_about.png»-filen har fått endret gruppeeierskap.
For å endre gruppeeierskapet til selve den symbolske lenken, må vi bruke alternativet –no-dereference.
Kommandoen som skal brukes er:
sudo chgrp --no-dereference devteam button_link
Vi bruker ls -l for å bekrefte at det nye gruppeeierskapet er satt for den symbolske lenken.
ls -l button-link
Denne gangen var det berørte elementet selve den symbolske lenken, ikke filen den peker til.
Fint og enkelt
Enkelt er bra. Det betyr at det er mindre å huske og mindre å bli forvirret med. Det burde bety færre feil.