Při používání systému Linux uživatelé často nepřemýšlejí o tom, kdo je vlastníkem souboru. Když však jde o provoz serveru, situace se mění. Pro zvýšení bezpečnosti získá server vlastního uživatele. Není neobvyklé, že servery používají stejnou skupinu, například www-data
. Dále se podíváme, jak tato funkce pracuje se soubory a adresáři. Zvláštní pozornost budeme věnovat symbolickým odkazům, protože při použití nezabezpečených nastavení mohou způsobit problémy.
Standard oprávnění k souborům přišel do Linuxu z Unixu. Každý objekt má tedy svého uživatele
, skupina
navíc popisuje právaostatních
uživatelů(other)
. Oprávnění se skládají ze tří položek: čtení, zápis, spuštění. Ke změně oprávnění se používá příkaz umask
, ale ke změně vlastníka a skupiny přímo příkazy chown
. K zobrazení aktuálních oprávnění lze použít příkaz ls
.
Obecné zobrazení příkazu chgrp
:
$ chgrp [options] new_group file_name
Seznam běžných možností příkazu chgrp
:
-h
- pracuje přímo se samotnými symbolickými odkazy;--dereference
- práce se soubory, nikoli se samotnými symbolickými odkazy. Používá se ve výchozím nastavení;-R
- rekurzivní zpracování adresáře s celým jeho obsahem;-H
- následuje symbolický odkaz a mění atributy souboru/adresáře. Používá se ve spojení s parametrem -R
;-L
- následuje symbolický odkaz a pokračuje v rekurzivním zpracování. Používá se ve spojení s parametrem -R
;-P
- při setkání se symbolickým odkazem zpracovat pouze tento odkaz. Používá se společně s parametrem -R
, je výchozí hodnotou;--reference=jméno_souboru
- použije ukázkovou skupinu;-c
- při zpracování se změní pouze výstup;-v
- vypisuje informace o každém zpracovávaném objektu.Nejjednodušší příklad použití příkazu chgrp
. Následující mění celý objekt www-data
pro soubor
v aktuální složce:
$ sudo chgrp www-data file.txt
A tento změní skupinu na www-data
pro složku adresáře
:
$ sudo chgrp www-data folder
Příkaz pracuje velmi předvídatelným způsobem, mění jejich skupinu. Objekty ve složce zůstávají beze změny. Pokud jsou zpracovávány symbolické odkazy, jejich atributy zůstávají beze změny, ale objekt dostane novou skupinu. Toto chování je podobné zacházení s parametrem --dereference
.
Například tyto příkazy aplikované na symbolické odkazy budou fungovat tak, jak je znázorněno na obrázku:
$ sudo chgrp www-data sym_file.txt
Podívejme se, jak by fungoval parametr -h
měnící atributy symbolického odkazu:
$ sudo chgrp -h www-data sym_file
Skupina byla nastavena nejen adresáři, ale také všem souborům uvnitř. Všimněte si, že se změnilo chování, nyní se při zpracování symbolického odkazu nastavují atributy samotnému odkazu, nikoli objektu.
Abychom viděli rozdíl mezi parametry -H
a -L
, podívejme se na několik dalších příkladů. Připomeňme, že je nutné je použít společně s parametrem -R:
$ sudo chgrp -RH www-data folder
Při použití parametru -H
se chování při zpracování symbolických odkazů změnilo, nyní se s nimi pracuje, jako by byly funkce spuštěny samostatně. Atributy odkazů se nemění, atributy samotných objektů ano a rekurzivní zpracování se zastaví při přechodu do adresáře.
$ sudo chgrp -RL www-data folder
Provádí jedinou funkci - mění skupinu souborů a adresářů.
Při zpracování symbolických odkazů byste měli být velmi opatrní, abyste nepoškodili systém.