Příkaz chgrp v Linuxu: Jak efektivně měnit skupinové vlastnictví
V operačním systému Linux slouží příkaz chgrp
ke změně skupinového vlastnictví souborů nebo adresářů. Možná se ptáte, proč ho používat, když máme k dispozici příkaz chown
? Je to proto, že někdy potřebujeme specializovaný nástroj, nikoli univerzální řešení. Představte si to jako rozdíl mezi švýcarským nožem a skalpelem – oba jsou užitečné, ale každý má své specifické využití.
Kdy je vhodné použít příkaz chgrp?
Příkaz chgrp
je určen výhradně pro změnu skupinového vlastnictví. Zatímco chown
umožňuje změnit jak uživatele, tak i skupinu vlastníka, chgrp
se soustředí pouze na skupinu. Proč tedy zvolit chgrp
?
Jedním z důvodů je jednoduchost. Použití chown
pro úpravu jen skupinového vlastnictví může být matoucí. Vyžaduje precizní syntaxi, zejména správné umístění dvojtečky „:“, které odděluje uživatele a skupinu. Chyba v syntaxi může vést k nechtěným výsledkům. Naopak, chgrp
má jednodušší a přehlednější syntaxi a navíc nabízí funkci, která nám sdělí, jaké změny byly provedeny.
Je to účelový nástroj, který se drží unixové filozofie dělat jednu věc, ale dělat ji dobře. Podívejme se, co chgrp
umí.
Změna skupinového vlastnictví souboru
Změna skupinového vlastnictví souboru je snadná. Je však nutné použít sudo
, protože změna skupiny, do které soubor patří, je operace vyžadující administrátorská práva. Zkusme změnit skupinové vlastnictví souboru gc.c
, který je aktuálně ve skupině „dave“, na skupinu „devteam“.
Nejdříve si ověříme aktuální nastavení pomocí příkazu ls -l
(dlouhý výpis):
ls -l
Pro samotnou změnu použijeme příkaz: sudo chgrp devteam gc.c
. Zde sudo
zajistí dostatečná oprávnění, následuje příkaz chgrp
, nová skupina („devteam“) a nakonec název souboru (gc.c
).
sudo chgrp devteam gc.c
Opětovným spuštěním ls -l
ověříme, že změna proběhla:
ls -l
Vidíme, že vlastnictví skupiny se skutečně změnilo z „dave“ na „devteam“.
Pokud potřebujeme změnit vlastnictví skupiny pro více souborů, můžeme použít zástupné znaky. Následující příkaz změní skupinové vlastnictví všech zdrojových souborů s příponou .c
v aktuálním adresáři na skupinu „devteam“:
sudo chgrp devteam *.c
Pro ověření, že změny proběhly, můžeme opět použít ls -l
:
ls -l
Všechny zdrojové soubory C v daném adresáři mají nyní skupinové vlastnictví nastavené na „devteam“.
Volba -c
(changes) způsobí, že chgrp
vypíše seznam provedených změn u jednotlivých souborů. Pokud jsme například udělali chybu a potřebujeme nastavit skupinové vlastnictví zdrojových souborů na „researchlab“, použijeme následující příkaz:
sudo chgrp -c researchlab *.c
Vidíme seznam změn, což nám pomáhá ověřit, že jsme skutečně změnili to, co jsme zamýšleli.
Změna skupinového vlastnictví adresáře
Změna skupinového vlastnictví adresáře je obdobně jednoduchá. Například následující příkaz změní skupinové vlastnictví adresáře „backup“:
sudo chgrp -c devteam ./backup
Je důležité zdůraznit, že tento příkaz změní skupinové vlastnictví samotného adresáře, nikoli souborů v něm obsažených. Pro ověření použijeme ls -l -d
(dlouhý výpis pro adresář):
ls -l -d
Vlastnictví skupiny adresáře „backup“ se změnilo na „devteam“.
Rekurzivní změna vlastnictví
Pokud potřebujeme změnit vlastnictví skupiny pro soubory a adresáře v daném adresáři, můžeme použít volbu -R
(rekurzivní). Tato volba zajistí, že se změna projeví na všech souborech a podadresářích daného adresáře.
Zkusme to s adresářem „backup“:
sudo chgrp -R devteam ./backup
Zkontrolujeme soubory v podadresáři „images“ a nastavení samotného podadresáře pomocí ls
:
ls -l ./backup/images
ls -l -d ./backup/images
Vidíme, že se změnilo vlastnictví skupiny jak pro soubory, tak i pro podadresáře.
Použití referenčního souboru
Místo explicitního zadávání názvu skupiny můžeme použít referenční soubor, jehož skupinové vlastnictví se zkopíruje. Řekněme, že chceme, aby soubor gc.h
měl stejné skupinové vlastnictví jako gc.c
.
Nejprve ověříme aktuální nastavení souborů pomocí ls
:
ls -l gc.c
ls -l gc.h
Pro kopírování vlastnictví použijeme volbu --reference
:
sudo chgrp --reference=gc.c gc.h
Ověříme, zda se změna projevila na souboru gc.h
:
ls -l gc.h
Soubor gc.h
má nyní stejné skupinové vlastnictví jako soubor gc.c
.
chgrp a symbolické odkazy
Příkaz chgrp
lze použít i pro symbolické odkazy. Můžeme změnit skupinové vlastnictví samotného odkazu, nebo souboru, na který odkaz směřuje. Pro tento příklad jsme vytvořili symbolický odkaz s názvem „button_link“, který odkazuje na soubor “ ./backup/images/button_about.png“. Pokud chceme změnit vlastnictví souboru, použijeme volbu --dereference
. Tím se změní nastavení souboru, na který odkaz směřuje, ale samotný symbolický odkaz zůstane beze změny.
Ověříme nastavení symbolického odkazu pomocí ls -l
:
ls -l button_link
Příkaz pro změnu vlastnictví souboru je:
sudo chgrp --dereference devteam button_link
Ověříme, že symbolický odkaz zůstal beze změny a také zkontrolujeme nastavení skupinového vlastnictví souboru, na který odkazuje:
ls -l button_link
ls -l ./backup/images/button_about.png
Symbolický odkaz je beze změny, zatímco u souboru „button_about.png“ bylo upraveno skupinové vlastnictví.
Pro změnu skupinového vlastnictví samotného symbolického odkazu musíme použít volbu --no-dereference
:
sudo chgrp --no-dereference devteam button_link
Ověříme nastavení symbolického odkazu pomocí ls -l
:
ls -l button-link
Nyní bylo změněno skupinové vlastnictví samotného symbolického odkazu, nikoli souboru, na který odkazuje.
Jednoduchost je klíč
Jednoduchost je výhodou. Znamená to méně věcí k zapamatování a menší pravděpodobnost chyb. A to by mělo vést k efektivnější práci.