Linux alatt a felhasználók gyakran ritkán gondolnak arra, hogy ki a fájl tulajdonosa. Amikor azonban szerver futtatásáról van szó, a helyzet megváltozik. A biztonság növelése érdekében a szerver saját felhasználót kap. Nem ritka, hogy a szerverek ugyanazt a csoportot használják, például www-data
. Ezután nézzük meg, hogyan működik ez a funkció a fájlokkal és könyvtárakkal. Különös figyelmet fogunk fordítani a szimbolikus hivatkozásokra, mivel ezek problémát okozhatnak a nem biztonságos beállítások használatakor.
A fájljogosultságok szabványa a Linuxra a Unixból érkezett. Tehát minden objektumnak van egy felhasználója
, csoportja
ezen kívül leírja atöbbi
felhasználó jogait(other)
. A jogosultságok három tételből állnak: olvasás, írás, végrehajtás. A jogosultságok módosítására az umask
parancs szolgál, de a tulajdonos és a csoport közvetlen módosítására a chown
parancsok szolgálnak. Az ls
paranccsal megtekinthetők az aktuális jogosultságok.
A chgrp
parancs általános nézete:
$ chgrp [options] new_group file_name
A chgrp
parancs általános opcióinak listája:
-h
- közvetlenül magával a szimbolikus linkekkel dolgozik;--dereference
- a fájlokkal dolgozik, nem magukkal a szimbolikus linkekkel. Alapértelmezés szerint használatos;-R
- egy könyvtár rekurzív feldolgozása annak teljes tartalmával együtt;-H
- követi a szimbolikus linket és megváltoztatja a fájl/könyvtár attribútumait. A -R
paraméterrel együtt használható;-L
- követi a szimbolikus linket és folytatja a rekurzív feldolgozást. A -R
paraméterrel együtt használható;-P
- ha szimbolikus hivatkozással találkozik, csak azt dolgozza fel. A -R
paraméterrel együtt használva az alapértelmezett érték;--reference=file_name
- a mintacsoport használata;-c
- a kimenet csak feldolgozáskor változik;-v
- minden egyes feldolgozott objektumról információt ad ki.A chgrp
parancs használatának legegyszerűbb példája. A következő a teljes www-data
objektumot módosítja az aktuális mappában lévő fájlhoz
:
$ sudo chgrp www-data file.txt
Ez pedig megváltoztatja a mappa mappájának
www-data
csoportját:
$ sudo chgrp www-data folder
A parancs nagyon kiszámítható módon működik, megváltoztatja a csoportjukat. A mappában lévő objektumok változatlanok maradnak. Ha szimbolikus linkeket kezel, akkor azok attribútumai változatlanok maradnak, de az objektum új csoportot kap. Ez a viselkedés hasonló a --dereference
paraméter kezeléséhez.
Például ezek a parancsok szimbolikus linkekre alkalmazva a képernyőképen látható módon működnek:
$ sudo chgrp www-data sym_file.txt
Nézzük meg, hogyan működik a -h
paraméter, amely megváltoztatja egy szimbolikus hivatkozás attribútumait:
$ sudo chgrp -h www-data sym_file
A csoportot nemcsak a könyvtárra, hanem a benne lévő összes fájlra is beállította. Vegyük észre, hogy a viselkedés megváltozott, mostantól a szimbolikus link feldolgozásakor az attribútumok magára a linkre, nem pedig az objektumra lesznek beállítva.
Hogy lássuk a -H
és -L
paraméterek közötti különbséget, nézzünk még néhány példát. Emlékezzünk arra, hogy ezeket a -R
paraméterrel együtt kell használni:
$ sudo chgrp -RH www-data folder
A -H
használatával megváltozott a viselkedés a szimbolikus linkek feldolgozásakor, most már úgy kezeli őket, mintha a függvények külön-külön lennének végrehajtva. A hivatkozások attribútumai nem változnak, maguknak az objektumoknak az attribútumai igen, és a rekurzív feldolgozás leáll, amikor könyvtárat váltunk.
$ sudo chgrp -RL www-data folder
Egyetlen funkciót hajt végre - megváltoztatja a fájlok és könyvtárak csoportját.
A szimbolikus hivatkozások feldolgozásakor rendkívül óvatosnak kell lennie, nehogy kárt tegyen a rendszerben.