Uprawnienia specjalne (setuid, setgid, sticky bit)

Linux oferuje trzy typy specjalnych uprawnień bitowych, które mogą być ustawione na plikach i katalogach:

# setuid 4 set user identifier bit bit identyfikatora użytkownika
# setgid  2 set group identifier bit bit identyfikatora grupy
# sticky  1 sticky bit klejący bit

 

Bit setuid na plikach wykonywalnych

Flaga setuid jest ustawiana na plikach wykonywalnych na poziomie właściciela pliku. Plik wykonywalny z ustawionym bitem setuid jest wykonywany przez zwykłych użytkowników z takimi przywilejami jakie posiada właściciel pliku. Najczęściej spotykanym przykładem jest komenda su, której właścicielem jest root. Komenda ta ma domyślnie ustawiony bit setuid.

Gdy zwykły użytkownika wykonuje tą komendę zostania ona uruchomiona tak jak gdyby root (właściciel) ją uruchomił.

Komenda su (switch user) pozwala użytkownikowi na przełączenie się na konto innego użytkownika pod warunkiem, że zna on hasło tego innego użytkownika.

Usuńmy bit setuid z polecenia su:

Plik jest wciąż wykonywalny ale nie ma bitu setuid (s), będzie to zapobiegać przed przełączaniem się zwykłych użytkowników na konta innych użytkowników tak jakby utracili specjalne uprawnienia:

Użytkownik otrzymuje komunikat o braku możliwości autentykacji pomimo, że wpisał prawidłowe hasło.

Zresetujmy teraz bit setuid na komendzie su:

Możemy to zrobić korzystając także z notacji symbolicznej:

Możemy przeszukać wszystkie pliki naszego systemu w poszukiwaniu plików posiadających ustawiony bit setuid:

 

Bit setgid na plikach wykonywalnych

Bit setgid ustawiany jest na plikach wykonywalnych na poziomie grupy. Z ustawionym bitem setgid plik jest wykonywany przez użytkowników, którzy nie są jego właścicielami, z przywilejami użytkowników należących do grupy.

Przykładem programu z ustawionym bitem setgid jest wall, którego właścicielem jest root a grupa, do której należy to tty.

Wall to program, który rozgłasza komunikaty wszystkim zalogowanym użytkownikom i drukuje je na terminalach użytkowników.

Usuńmy bit setgid z /usr/bin/wall:

Użytkownicy, którzy nie są właścicielem programu wall (wszyscy poza rootem) utracili teraz przywilej rozgłaszania komunikatów.

Przypiszmy z powrotem bit setgid:

lub notacja symboliczna:

Przeszukajmy nasz system w poszukiwaniu plików z ustawionym bitem setgid:

 

Bit setgid na współdzielonych katalogach

Bit setgid może być ustawiany na katalogach współdzielonych przez grupę aby pliki i podkatalogi automatycznie dziedziczyły grupę przypisaną do katalogu. Członkowie grupy, która współdzieli dany katalog nie muszą dzięki temu ręcznie  zmieniać grupy na każdym nowo utworzonym pliku lub katalogu.

 

Ćwiczenie.

1. Dodaj grupę sdatagrp z GID 9999 :

2. Uczyń użytkowników user100 i user200 członkami grupy sdatagrp:

3. Utwórz katalog /sdata:

4. Dla katalogu /sdata właścicielem ma być root a grupą sdatagrp:

5. Ustaw bit setgid na katalogu /sdata:

6. Zweryfikuj atrybuty ustawione w powyższych krokach:

7. Przełącz się lub zaloguj jako user100 i wejdź do katalogu /sdata:

8. Utwórz plik i wylistuj go:

Obaj członkowie grupy mogą teraz tworzyć i modyfikować pliki w katalogu /sdata. Będą oni właścicielami plików ale będą one przynależeć do grupy sdatagrp.

 

Klejący bit w katalogach dostępnych publicznie

Klejący bit ustawiany jest w katalogach, w których wszyscy użytkownicy mogą zapisywać dane aby zabezpieczyć pliki i podkatalogi należące do zwykłych użytkowników przed skasowaniem lub przeniesieniem przez innych użytkowników.

Ten atrybut ustawiony jest na katalogu /tmp i /var/tmp:

Do ustawiania tego atrybutu można używać polecenia chmod:

Notacja symboliczna:

Usuwanie klejącego bitu:

Wyszukiwanie w systemie plików z ustawionym klejącym bitem:

Leave a Reply

Your email address will not be published. Required fields are marked *