De chgrp
commando op Linux verandert het groepseigendom van een bestand of map. Waarom het gebruiken in plaats van chown
? Soms is een Zwitsers zakmes geweldig, maar als je echt een scalpel nodig hebt, is alleen een scalpel voldoende.
Wanneer u moet gebruiken chgrp
U gebruikt de chgrp
opdracht om het groepseigendom van een bestand of map te wijzigen. De chown
commando stelt u in staat de eigenaar van de gebruiker te wijzigen en de groepseigenaar van een bestand of map. Dus waarom zou je het nodig hebben of gebruiken chgrp
?
Nou, om te beginnen is het gemakkelijk. Gebruik makend van chown
alleen de instelling van de groepseigenaar wijzigen is een beetje contra-intuïtief. Je moet heel voorzichtig zijn met de syntaxis. Het hangt af van de juiste plaatsing van een dubbele punt “:”. Plaats dat verkeerd, en je brengt niet de verandering aan die je dacht te zijn.
De syntaxis van chgrp
is al met al eenvoudiger. Het heeft ook een handige functie die u in eenvoudige bewoordingen vertelt welke wijzigingen het zojuist heeft aangebracht.
Het is een speciaal gebouwd en speciaal hulpmiddel voor de taak die voorhanden is. chgrp
omarmt volledig het Unix-ontwerpprincipe van één ding doen en het goed doen. Laten we eens kijken wat het te bieden heeft.
Het groepseigendom van een bestand wijzigen
Het groepseigendom van een bestand wijzigen is heel eenvoudig. Je moet gebruiken sudo
met chgrp
. Groepen zijn geen eigendom van gebruikers, dus of een bestand of map van de ene groep naar de andere wordt verplaatst, is geen beslissing die bij de gemiddelde gebruiker ligt. Dat is een taak voor iemand met rootrechten.
We gaan het groepseigendom wijzigen van een C-bronbestand met de naam “gc.c.” We gaan het veranderen in de “devteam” -groep.
We kunnen de huidige eigendomswaarden controleren met ls
met de -l
(lange lijst) optie.
ls -l
Dit is de opdracht om het groepseigendom te wijzigen. Type sudo
, een ruimte, chgrp
, een spatie, de naam van de groep die we gaan instellen als de groepseigenaar, een spatie en de naam van het bestand.
sudo chgrp devteam gc.c
We zullen controleren of de wijziging is aangebracht met ls -l
nog een keer.
ls -l
We kunnen zien dat het groepseigendom is gewijzigd van ‘dave’ in ‘devteam’.
Om het groepseigendom voor een set bestanden in één keer te wijzigen, kunt u jokertekens gebruiken. Laten we het groepseigendom wijzigen voor alle C-bronbestanden in de huidige map. We zullen dit commando gebruiken:
sudo chgrp devteam *.c
We kunnen controleren of de wijziging is aangebracht zoals we hadden verwacht door te gebruiken ls -l
.
ls -l
Alle C-bronbestanden in deze map zijn gewijzigd zodat hun groepseigendom ‘devteam’ is.
Door de -c
(wijzigingen) optie chgrp
zal een lijst maken van de wijzigingen die het heeft aangebracht in elk bestand. Stel dat we een fout hebben gemaakt, we wilden dat de C-bronbestanden hun groepseigendom hadden ingesteld op ‘researchlab’. Laten we dat nu corrigeren. We gebruiken dit commando:
sudo chgrp -c researchlab *.c
De wijzigingen worden voor ons aangebracht en elke wijziging wordt in de lijst vermeld, zodat we kunnen controleren of wat we hebben gewijzigd correct is.
Het groepseigendom van een directory wijzigen
Het groepseigendom van een directory wijzigen is net zo eenvoudig. We kunnen deze opdracht gebruiken om het groepseigendom voor de directory “backup” te wijzigen.
sudo chgrp -c devteam ./backup
Voor alle duidelijkheid: dit commando verandert het groepseigendom van de directory zelf, niet de bestanden in de directory. We zullen gebruiken ls -l
met de -d
(directory) optie om te controleren of dit het geval is.
ls -l -d
Het groepseigendom van de directory zelf is gewijzigd in ‘devteam’.
De recursieve optie
Als we het groepseigendom willen wijzigen voor de bestanden en mappen die in een map zijn opgeslagen, kunnen we de -R
(recursieve) optie. Dit zal leiden tot chgrp
om het groepseigendom te wijzigen voor alle bestanden en submappen onder de doelmap.
Laten we dit proberen met de map “backup”. Hier is het commando:
sudo chgrp -R devteam ./backup
We zullen de bestanden in een van de geneste submappen met de extensie ls
commando, en we zullen ook de instellingen van een van de geneste submappen door het gebruiken van ls
.
ls -l ./backup/images
ls -l -d ./backup/images
We kunnen zien dat het groepseigendom is gewijzigd zowel voor de bestanden in de geneste submappen als voor de geneste submappen.
Met behulp van een referentiebestand
Tot nu toe hebben we het expliciet verteld chgrp
de naam van de groep die we willen gebruiken. We kunnen ook gebruik maken van chgrp
op een manier die zegt “stel het groepseigendom van in deze bestand naar hetzelfde groepseigendom als dat het dossier.”
Laten we het groepseigendom van “gc.h” instellen op hetzelfde als “gc.c.”
We kunnen de huidige instellingen van “gc.c” en “gc.h” controleren met ls
.
ls -l gc.c
ls -l gc.h
De optie die we moeten gebruiken is de --reference
optie. Het groepseigendom wordt gekopieerd van het referentiebestand naar het andere bestand. Zorg ervoor dat u de bestanden op de juiste manier rond krijgt.
sudo chgrp --reference=gc.c gc.h
We zullen gebruiken ls
om te controleren of de instellingen zijn overgebracht naar “gc.h.”
ls -l gc.h
Het bestand “gc.h” heeft nu hetzelfde groepseigendom als “gc.c.”
Chgrp gebruiken met symbolische koppelingen
We kunnen gebruiken chgrp
om het groepseigendom van symbolische links te wijzigen, of van het bestand waarnaar wordt verwezen door de symbolische link.
Voor dit voorbeeld hebben we een symbolische link gemaakt met de naam ‘button_link’. Dit verwijst naar een bestand met de naam “./backup/images/button_about.png.” Om het groepseigendom van het bestand te wijzigen, moeten we de --dereference
optie. Hierdoor worden de instellingen voor het bestand gewijzigd en blijft de symbolische link ongewijzigd.
Laten we de instellingen voor de symbolische link controleren met ls -l
.
ls -l button_link
De opdracht om het bestand te wijzigen is:
sudo chgrp --dereference devteam button_link
We zullen controleren of de symbolische link ongewijzigd is met ls, en we zullen ook de instellingen voor groepseigendom voor het bestand controleren.
ls -l button_link
ls -l ./backup/images/button_about.png
De symbolische link is ongewijzigd en het groepseigendom van het bestand “button_about.png” is gewijzigd.
Om het groepseigendom van de symbolische link zelf te wijzigen, moeten we de --no-dereference
optie.
Het te gebruiken commando is:
sudo chgrp --no-dereference devteam button_link
We zullen gebruiken ls -l
om te verifiëren dat het nieuwe groepseigendom is ingesteld voor de symbolische link.
ls -l button-link
Dit keer was het betreffende item de symbolische link zelf, niet het bestand waarnaar het verwijst.
Lekker eenvoudig
Simpel is goed. Het betekent dat er minder is om te onthouden en minder om mee te verwarren. Dat zou minder fouten moeten opleveren.