Příkaz chgrp v systému Linux mění skupinové vlastnictví souboru nebo adresáře. Proč ho používat místo chownu? Někdy je skvělý švýcarský nůž, ale když opravdu potřebujete skalpel, stačí jen skalpel.
Table of Contents
Kdy byste měli použít chgrp
Chcete-li změnit skupinové vlastnictví souboru nebo adresáře, použijte příkaz chgrp. Příkaz chown vám umožňuje změnit vlastníka uživatele a vlastníka skupiny souboru nebo adresáře. Proč byste tedy potřebovali nebo používali chgrp?
No, za prvé, je to snadné. Použití chown ke změně pouze nastavení vlastníka skupiny je trochu neintuitivní. Musíte být velmi opatrní se syntaxí. Závisí na správném umístění dvojtečky „:“. Špatně to umístěte a neprovedete změnu, kterou jste si mysleli, že jste.
Syntaxe chgrp je úplně přímočařejší. Má také úhlednou funkci, která vám jednoduchým způsobem řekne, jaké změny právě provedl.
Je to účelový a vyhrazený nástroj pro daný úkol. chgrp zcela zahrnuje princip unixového designu dělat jednu věc a dělat ji dobře. Pojďme se podívat, co nabízí.
Změna skupinového vlastnictví souboru
Změna skupinového vlastnictví souboru je velmi jednoduchá. Musíte použít sudo s chgrp. Skupiny nejsou vlastněny uživateli, takže to, zda se soubor nebo adresář přesune z jedné skupiny do druhé, není rozhodnutí, které sedí na průměrného uživatele. To je práce pro někoho s právy roota.
Změníme skupinové vlastnictví zdrojového souboru C s názvem „gc.c“. Změníme to na skupinu „devteam“.
Aktuální hodnoty vlastnictví můžeme zkontrolovat pomocí ls s volbou -l (dlouhý výpis).
ls -l
Toto je příkaz ke změně vlastnictví skupiny. Zadejte sudo, mezeru, chgrp , mezeru, název skupiny, kterou nastavíme jako vlastníka skupiny, mezeru a název souboru.
sudo chgrp devteam gc.c
Znovu zkontrolujeme, zda byla změna provedena pomocí ls -l.
ls -l
Vidíme, že vlastnictví skupiny se změnilo z „dave“ na „devteam“.
Chcete-li změnit vlastnictví skupiny pro sadu souborů najednou, můžete použít zástupné znaky. Pojďme změnit vlastnictví skupiny pro všechny zdrojové soubory C v aktuálním adresáři. Použijeme tento příkaz:
sudo chgrp devteam *.c
Můžeme zkontrolovat, že změna byla provedena, jak jsme očekávali, pomocí ls -l.
ls -l
Všechny zdrojové soubory C v tomto adresáři byly změněny, takže jejich skupinové vlastnictví je „devteam“.
Použitím volby -c (změny) chgrp zobrazí seznam změn, které provedl v každém souboru. Předpokládejme, že jsme udělali chybu, chtěli jsme, aby zdrojové soubory C měly vlastnictví skupiny nastaveno na „researchlab“. Pojďme to nyní napravit. Použijeme tento příkaz:
sudo chgrp -c researchlab *.c
Změny jsou prováděny za nás a každá je uvedena tak, jak se děje, což nám umožňuje ověřit, že to, co jsme změnili, je správné.
Změna skupinového vlastnictví adresáře
Změna skupinového vlastnictví adresáře je stejně jednoduchá. Tento příkaz můžeme použít ke změně vlastnictví skupiny pro adresář „backup“.
sudo chgrp -c devteam ./backup
Aby bylo jasno, tento příkaz změní skupinové vlastnictví samotného adresáře, nikoli souborů v adresáři. Použijeme ls -l s volbou -d (adresář), abychom ověřili, že tomu tak je.
ls -l -d
Skupinové vlastnictví samotného adresáře bylo změněno na „devteam“.
Rekurzivní možnost
Pokud chceme změnit vlastnictví skupiny pro soubory a adresáře uložené v adresáři, můžeme použít volbu -R (rekurzivní). To způsobí, že chgrp změní vlastnictví skupiny pro všechny soubory a podadresáře pod cílovým adresářem.
Zkusme to s adresářem „backup“. Zde je příkaz:
sudo chgrp -R devteam ./backup
Prohlédneme si soubory v jednom z vnořených podadresářů pomocí příkazu ls a také zkontrolujeme nastavení jednoho z vnořených podadresářů pomocí ls .
ls -l ./backup/images
ls -l -d ./backup/images
Vidíme, že vlastnictví skupiny bylo změněno jak pro soubory ve vnořených podadresářích, tak pro vnořené podadresáře.
Použití referenčního souboru
Doposud jsme chgrp výslovně říkali název skupiny, kterou chceme použít. Můžeme také použít chgrp způsobem, který říká „nastav skupinové vlastnictví tohoto souboru na stejné skupinové vlastnictví jako tento soubor“.
Nastavme skupinové vlastnictví „gc.h“ tak, aby bylo stejné jako „gc.c“.
Aktuální nastavení „gc.c“ a „gc.h“ můžeme zkontrolovat pomocí ls.
ls -l gc.c
ls -l gc.h
Možnost, kterou musíme použít, je možnost –reference. Vlastnictví skupiny se zkopíruje z referenčního souboru do druhého souboru. Dbejte na to, aby byly soubory umístěny správně.
sudo chgrp --reference=gc.c gc.h
Pomocí ls zkontrolujeme, zda byla nastavení přenesena do „gc.h“.
ls -l gc.h
Soubor „gc.h“ má nyní stejné skupinové vlastnictví jako „gc.c“.
Použití chgrp se symbolickými odkazy
Můžeme použít chgrp ke změně skupinového vlastnictví symbolických odkazů nebo souboru, na který ukazuje symbolický odkaz.
Pro tento příklad jsme vytvořili a symbolický odkaz s názvem „button_link“. To ukazuje na soubor s názvem „./backup/images/button_about.png“. Chcete-li změnit skupinové vlastnictví souboru, musíme použít volbu –dereference. Tím se změní nastavení souboru a symbolický odkaz zůstane nezměněn.
Zkontrolujeme nastavení pro symbolický odkaz pomocí ls -l.
ls -l button_link
Příkaz pro změnu souboru je:
sudo chgrp --dereference devteam button_link
Pomocí ls zkontrolujeme, zda je symbolický odkaz nezměněn, a také zkontrolujeme nastavení skupinového vlastnictví souboru.
ls -l button_link
ls -l ./backup/images/button_about.png
Symbolický odkaz se nezměnil a u souboru „button_about.png“ bylo upraveno vlastnictví skupiny.
Chcete-li změnit skupinové vlastnictví samotného symbolického odkazu, musíme použít možnost –no-dereference.
Příkaz k použití je:
sudo chgrp --no-dereference devteam button_link
Pomocí ls -l ověříme, že pro symbolický odkaz bylo nastaveno nové vlastnictví skupiny.
ls -l button-link
Tentokrát byl dotčenou položkou samotný symbolický odkaz, nikoli soubor, na který odkazuje.
Pěkné a jednoduché
Jednoduché je dobré. Znamená to, že je toho méně k zapamatování a méně k záměně. To by mělo znamenat méně chyb.