chgrp på Linux: Enkel guide til endring av gruppeeierskap

Forstå chgrp-kommandoen i Linux

I Linux-systemer brukes chgrp-kommandoen til å endre
gruppetilhørigheten til filer og mapper. Men hvorfor velge denne
kommandoen i stedet for chown? Selv om en universalkniv er
nyttig i mange situasjoner, finnes det tilfeller hvor et spesialverktøy
er nødvendig for å utføre en oppgave nøyaktig.

Når er chgrp det riktige valget?

chgrp-kommandoen er spesifikt designet for å endre
gruppetilhørigheten til en fil eller mappe. I motsetning til
chown-kommandoen, som kan endre både bruker- og
gruppetilhørighet, tilbyr chgrp en mer fokusert tilnærming.
Men hvorfor foretrekke chgrp?

For det første er chgrp intuitivt og enkelt å bruke. Å
benytte chown for å kun endre gruppetilhørigheten kan
være forvirrende på grunn av den spesifikke syntaksen, som krever riktig
bruk av kolontegnet :. Feil plassering kan føre til
uventede resultater.

chgrp har en enklere syntaks
og gir direkte tilbakemelding på endringene som er utført.

Kort sagt, chgrp er et spesialverktøy for denne spesifikke
oppgaven. Det følger Unix-prinsippet om å utføre én oppgave godt. La oss
utforske funksjonene nærmere.

Endre gruppeeierskap for en fil

For å endre gruppetilhørigheten til en fil, må chgrp
kjøres med sudo. Endringer i gruppetilhørighet krever
root-privilegier, da det ikke er en standard brukers rettighet å endre
tilhørighet fra en gruppe til en annen.

I dette eksemplet skal vi endre gruppetilhørigheten for en
C-kildekodefil ved navn gc.c til gruppen
devteam.

For å sjekke nåværende gruppetilhørighet, kan vi bruke ls -l
kommandoen.

ls -l

Her er kommandoen for å endre gruppetilhørighet: sudo, et
mellomrom, chgrp, et mellomrom, navnet på den nye gruppen, et
mellomrom, og til slutt navnet på filen.

sudo chgrp devteam gc.c

Vi kan verifisere endringen ved å kjøre ls -l på nytt.

ls -l

Som vi ser, er gruppeeierskapet endret fra dave til
devteam.

For å endre gruppetilhørigheten for flere filer samtidig, kan vi bruke
jokertegn. La oss endre alle C-kildekodene i gjeldende mappe. Kommandoen
blir:

sudo chgrp devteam *.c

Vi kan sjekke endringen med ls -l.

ls -l

Nå tilhører alle C-kildekodene gruppen devteam.

Ved å bruke -c-flagget (endringer), vil chgrp
liste endringene den gjør. Hvis vi for eksempel har gjort en feil og vil
endre gruppetilhørigheten for C-filene til researchlab, kan vi
utføre:

sudo chgrp -c researchlab *.c

Endringene er gjennomført, og hver endring er listet opp, noe som bekrefter
at det vi har endret er riktig.

Endre gruppeeierskap for en katalog

Det er like enkelt å endre gruppetilhørighet for en mappe. La oss endre
gruppen for mappen backup med denne kommandoen:

sudo chgrp -c devteam ./backup

Denne kommandoen vil bare endre gruppetilhørigheten for selve mappen, ikke
filene i den. Dette kan bekreftes med ls -l -d.

ls -l -d

Gruppen til mappen er nå devteam.

Det rekursive alternativet

Hvis vi ønsker å endre gruppetilhørigheten for alle filer og mapper i en
mappe, kan vi bruke -R flagget (rekursivt). Dette vil endre
gruppetilhørigheten for alle filer og undermapper i den oppgitte mappen.

La oss prøve dette med mappen backup. Kommandoen blir:

sudo chgrp -R devteam ./backup

Vi kan sjekke filene i en av de nestede undermappene med ls, og
innstillingene for en av de nestede undermappene med ls -l -d.

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

Gruppetilhørigheten er endret for både filer i de nestede undermappene og
selve undermappene.

Bruke en referansefil

Tidligere har vi skrevet inn navnet på gruppen eksplisitt i
chgrp-kommandoen. Vi kan også bruke chgrp til å
sette gruppetilhørigheten til en fil basert på en annen fil.

La oss sette gruppen for gc.h til det samme som gc.c.

Vi kan sjekke de gjeldende gruppene for gc.c og
gc.h med ls.

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

Alternativet vi trenger er --reference. Dette kopierer
gruppeeierskapet fra referansefilen til den andre filen. Pass på at filene
er i riktig rekkefølge.

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

Vi kan bekrefte endringen med ls.

ls -l gc.h

Filen gc.h har nå samme gruppe som gc.c.

Bruke chgrp med symbolske lenker

chgrp kan brukes til å endre gruppen for en symbolsk lenke
eller filen den lenker til.

I dette eksemplet har vi en symbolsk lenke
som heter button_link. Denne lenken peker til
./backup/images/button_about.png. For å endre gruppen til
filen, bruker vi --dereference-flagget. Dette vil endre
innstillingene til filen uten å påvirke den symbolske lenken.

La oss sjekke innstillingene til den symbolske lenken med ls -l.

ls -l button_link

Kommandoen for å endre filen er:

sudo chgrp --dereference devteam button_link

Vi kan sjekke at den symbolske lenken er uendret med ls, og
sjekke gruppetilhørigheten for filen.

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

Den symbolske lenken er uendret, mens gruppen til
button_about.png er endret.

For å endre gruppen til selve den symbolske lenken, bruker vi
--no-dereference-flagget.

Kommandoen blir:

sudo chgrp --no-dereference devteam button_link

Vi bruker ls -l for å bekrefte at gruppen er endret for den
symbolske lenken.

ls -l button-link

Denne gangen ble selve den symbolske lenken endret, ikke filen den peker
til.

Enkelhet er nøkkelen

Enkelhet er viktig. Det betyr mindre å huske, mindre forvirring og
færre feil. chgrp er et verktøy som gjør én ting, og gjør det
godt.