chgrp-kommandoen på Linux ændrer gruppeejerskabet af en fil eller et bibliotek. Hvorfor bruge det i stedet for chown? Nogle gange er en schweizisk hærkniv fantastisk, men når du virkelig har brug for en skalpel, vil kun en skalpel duge.
Indholdsfortegnelse
Hvornår skal du bruge chgrp
Du bruger kommandoen chgrp til at ændre gruppeejerskabet af en fil eller et bibliotek. Med chown-kommandoen kan du ændre brugerejeren og gruppeejeren af en fil eller et bibliotek. Så hvorfor skulle du bruge eller bruge chgrp?
Nå, for det første er det nemt. Det er lidt kontraintuitivt at bruge chown til kun at ændre gruppeejerindstillingen. Du skal være meget forsigtig med syntaksen. Det afhænger af den korrekte placering af et kolon “:”. Forlagt det, og du laver ikke den ændring, du troede, du var.
Syntaksen for chgrp er helt mere ligetil. Den har også en smart funktion, der i enkle vendinger fortæller dig, hvilke ændringer den lige har foretaget.
Det er et specialbygget og dedikeret værktøj til den aktuelle opgave. chgrp omfavner fuldstændig Unix-designprincippet om at gøre én ting og gøre det godt. Lad os se, hvad det har at tilbyde.
Ændring af gruppeejerskab af en fil
At ændre gruppeejerskabet af en fil er meget ligetil. Du skal bruge sudo med chgrp. Grupper ejes ikke af brugere, så om en fil eller et bibliotek flyttes fra en gruppe til en anden er ikke en beslutning, der ligger hos den gennemsnitlige bruger. Det er et job for en med root-privilegier.
Vi vil ændre gruppeejerskabet af en C-kildefil kaldet “gc.c.” Vi vil ændre det til “devteam”-gruppen.
Vi kan kontrollere de nuværende ejerskabsværdier ved at bruge ls med muligheden -l (lang liste).
ls -l
Dette er kommandoen til at ændre gruppeejerskabet. Skriv sudo, et mellemrum, chgrp, et mellemrum, navnet på den gruppe, vi vil indstille som gruppeejer, et mellemrum og navnet på filen.
sudo chgrp devteam gc.c
Vi kontrollerer, at ændringen er foretaget ved at bruge ls -l igen.
ls -l
Vi kan se, at gruppeejerskabet er blevet ændret fra “dave” til “devteam.”
For at ændre gruppeejerskabet for et sæt filer på én gang kan du bruge jokertegn. Lad os ændre gruppeejerskabet for alle C-kildefilerne i den aktuelle mappe. Vi vil bruge denne kommando:
sudo chgrp devteam *.c
Vi kan kontrollere, at ændringen er foretaget som forventet ved at bruge ls -l.
ls -l
Alle C-kildefilerne i denne mappe er blevet ændret, så deres gruppeejerskab er “devteam.”
Ved at bruge -c (ændringer) indstillingen vil chgrp liste de ændringer, den har lavet til hver fil. Antag, at vi lavede en fejl, vi ønskede, at C-kildefilerne skulle have deres gruppeejerskab sat til “researchlab.” Lad os rette op på det nu. Vi bruger denne kommando:
sudo chgrp -c researchlab *.c
Ændringerne er lavet for os, og hver enkelt er listet, efterhånden som det sker, så vi kan bekræfte, at det, vi har ændret, er korrekt.
Ændring af gruppeejerskab af en adressebog
Ændring af gruppeejerskab af et bibliotek er lige så enkelt. Vi kan bruge denne kommando til at ændre gruppeejerskabet for mappen “backup”.
sudo chgrp -c devteam ./backup
For at være klar, vil denne kommando ændre gruppeejerskabet af selve mappen, ikke filerne inde i mappen. Vi vil bruge ls -l med muligheden -d (mappe) for at bekræfte, at dette er tilfældet.
ls -l -d
Gruppeejerskabet af selve mappen er blevet ændret til “devteam.”
Den rekursive mulighed
Hvis vi ønsker at ændre gruppeejerskabet for de filer og mapper, der er gemt i en mappe, kan vi bruge -R (rekursiv) mulighed. Dette vil få chgrp til at ændre gruppeejerskabet for alle filer og undermapper under målmappen.
Lad os prøve dette med “backup”-mappen. Her er kommandoen:
sudo chgrp -R devteam ./backup
Vi gennemgår filerne i en af de indlejrede undermapper med ls-kommandoen, og vi vil også kontrollere indstillingerne for en af de indlejrede undermapper ved at bruge ls .
ls -l ./backup/images
ls -l -d ./backup/images
Vi kan se, at gruppeejerskabet er blevet ændret både for filerne i de indlejrede undermapper og for de indlejrede undermapper.
Brug af en referencefil
Indtil videre har vi eksplicit fortalt chgrp navnet på den gruppe, vi ønsker at bruge. Vi kan også bruge chgrp på en måde, der siger “indstil gruppeejerskabet af denne fil til det samme gruppeejerskab som den fil.”
Lad os indstille gruppeejerskabet af “gc.h” til at være det samme som “gc.c.”
Vi kan kontrollere de aktuelle indstillinger for “gc.c” og “gc.h” ved hjælp af ls.
ls -l gc.c
ls -l gc.h
Den mulighed, vi skal bruge, er -referenceindstillingen. Gruppeejerskabet kopieres fra referencefilen til den anden fil. Sørg for at få filerne den rigtige vej rundt.
sudo chgrp --reference=gc.c gc.h
Vi bruger ls til at kontrollere, at indstillingerne er blevet overført til “gc.h.”
ls -l gc.h
Filen “gc.h” har nu samme gruppeejerskab som “gc.c.”
Brug af chgrp med symbolske links
Vi kan bruge chgrp til at ændre gruppeejerskabet af symbolske links eller af filen, der peges på af det symbolske link.
Til dette eksempel har vi lavet en symbolsk link kaldet “button_link”. Dette peger på en fil kaldet “./backup/images/button_about.png.” For at ændre gruppeejerskabet af filen skal vi bruge –dereference-indstillingen. Dette vil ændre indstillingerne for filen og forlade det symbolske link uændret.
Lad os tjekke indstillingerne for det symbolske link ved hjælp af ls -l.
ls -l button_link
Kommandoen til at ændre filen er:
sudo chgrp --dereference devteam button_link
Vi kontrollerer, at det symbolske link er uændret ved hjælp af ls, og vi kontrollerer også gruppeejerskabsindstillingerne for filen.
ls -l button_link
ls -l ./backup/images/button_about.png
Det symbolske link er uændret, og “button_about.png”-filen har fået ændret sit gruppeejerskab.
For at ændre gruppeejerskabet af selve det symbolske link, skal vi bruge muligheden –no-dereference.
Kommandoen der skal bruges er:
sudo chgrp --no-dereference devteam button_link
Vi bruger ls -l til at bekræfte, at det nye gruppeejerskab er blevet indstillet til det symbolske link.
ls -l button-link
Denne gang var det berørte element selve det symbolske link, ikke filen, det peger på.
Fint og enkelt
Simpelt er godt. Det betyder, at der er mindre at huske og mindre at blive forvirret med. Det burde betyde færre fejl.