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ń.
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ń.
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.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.