Często podczas korzystania z Linuksa użytkownicy rzadko myślą o tym, kto jest właścicielem pliku. Kiedy jednak przychodzi do uruchomienia serwera, sytuacja się zmienia. Aby zwiększyć bezpieczeństwo, serwer otrzymuje własnego użytkownika. Nierzadko zdarza się, że serwery korzystają z tej samej grupy, np. www-data. Następnie zobaczmy, jak ta funkcja działa z plikami i katalogami. Zwrócimy szczególną uwagę na dowiązania symboliczne, ponieważ mogą one powodować problemy podczas korzystania z niezabezpieczonych ustawień.
Co to oznacza
Standard uprawnień do plików przyszedł do Linuksa z Uniksa. Tak więc każdy obiekt posiada użytkownika, grupę, a oprócz tego opisuje uprawnieniainnych użytkowników(other). Uprawnienia składają się z trzech elementów: odczyt, zapis, wykonanie. Polecenie umask jest używane do zmiany uprawnień, ale polecenia chown są używane do bezpośredniej zmiany właściciela i grupy. Polecenie ls może być używane do przeglądania bieżących uprawnień.
Składnia i opcje
Ogólny widok polecenia chgrp:
$ chgrp [options] new_group file_name
Lista typowych opcji dla polecenia chgrp:
-h- praca bezpośrednio z samymi dowiązaniami symbolicznymi;--dereference- praca z plikami, a nie samymi dowiązaniami symbolicznymi. Używane domyślnie;-R- rekurencyjne przetwarzanie katalogu z całą jego zawartością;-H- podąża za dowiązaniem symbolicznym i zmienia atrybuty pliku/katalogu. Używane w połączeniu z parametrem-R;-L- podąża za dowiązaniem symbolicznym i kontynuuje przetwarzanie rekurencyjne. Używane w połączeniu z parametrem-R;-P- po napotkaniu dowiązania symbolicznego przetwarza tylko je. Używane razem z parametrem-R, jest wartością domyślną;--reference=nazwa_pliku- użyj przykładowej grupy;-c- wyjście zmienia się tylko podczas przetwarzania;-v- wypisuje informacje o każdym przetworzonym obiekcie.
Użycie polecenia
Najprostszy przykład użycia polecenia chgrp. Poniższy zmienia cały obiekt www-data dla pliku w bieżącym folderze:
$ sudo chgrp www-data file.txt
A ten zmienia grupę na www-data dla folderu folder:
$ sudo chgrp www-data folder

Polecenie działa w bardzo przewidywalny sposób, zmieniając ich grupę. Obiekty w folderze pozostają niezmienione. Jeśli obsługiwane są dowiązania symboliczne, ich atrybuty pozostają niezmienione, ale obiekt otrzymuje nową grupę. To zachowanie jest podobne do obsługi parametru --dereference.
Na przykład te polecenia zastosowane do dowiązań symbolicznych będą działać tak, jak pokazano na zrzucie ekranu:
$ sudo chgrp www-data sym_file.txt

Przyjrzyjmy się, jak działałby parametr -h zmieniający atrybuty dowiązania symbolicznego:
$ sudo chgrp -h www-data sym_file

Grupa została ustawiona nie tylko dla katalogu, ale także dla wszystkich plików w nim zawartych. Zauważ, że zachowanie uległo zmianie, teraz podczas przetwarzania dowiązania symbolicznego atrybuty są ustawiane dla samego dowiązania, a nie obiektu.
Aby zobaczyć różnicę między parametrami -H i -L, przyjrzyjmy się jeszcze kilku przykładom. Przypomnijmy, że muszą one być używane razem z -R:
$ sudo chgrp -RH www-data folder

Przy użyciu -H zachowanie podczas przetwarzania dowiązań symbolicznych uległo zmianie, są one teraz obsługiwane tak, jakby funkcje były wykonywane osobno. Atrybuty odwołań nie zmieniają się, atrybuty samych obiektów tak, a przetwarzanie rekurencyjne zatrzymuje się po przełączeniu do katalogu.
$ sudo chgrp -RL www-data folder

Wykonuje jedną funkcję - zmienia grupę plików i katalogów.

Podczas przetwarzania dowiązań symbolicznych należy zachować szczególną ostrożność, aby nie uszkodzić systemu.