Prawa dostępu
Prawa dostępu – mechanizm w systemach uniksowych, mający na celu umożliwić określenie uprawnień odczytu, edycji i uruchamiania dla poszczególnych użytkowników. Ma on na celu zapewnienie bezpieczeństwa, stabilności i kontroli prywatności w systemach wielodostępnych.
Prawa dostępu przydzielane są dla kategorii:
- user – użytkownik, właściciel pliku,
- group – grupa, właściciel pliku,
- other – pozostali użytkownicy.
Dla każdej z tych kategorii możliwe są trzy prawa dostępu, opisane literowo (rwx) lub liczbowo trzema bitami:
- read – odczyt, wartość – 100(2) = 4(8),
- write – zapis, wartość – 010(2) = 2(8),
- execute – wykonywanie, wartość 001(2) = 1(8).
Standardowym symbolicznym sposobem zapisu uprawnień jest:
-rwxr-xr-- 1 fizyk fizyk 2010 kwi 16 13:09 plik tuuugggooo
- t – oznacza typ pliku (- zwykły, d katalog, l dowiązanie symboliczne, s gniazdo, f FIFO, c urządzenie znakowe, b urządzenie blokowe)
- u – uprawnienia właściciela
- g – uprawnienia grupy
- o – uprawnienia pozostałych
- u – uprawnienia właściciela
Zapis liczbowy praw dostępu polega na przedstawieniu uprawnień za pomocą trzycyfrowej lub czterocyfrowej liczby ósemkowej, której kolejne cyfry oznaczają: uprawnienia specjalne (w liczbie trzycyfrowej nie występuje), uprawnienia użytkownika, uprawnienia grupy, uprawnienia pozostałych
- rwx r-x r-- → 111 101 100 (2) → 4+2+1 4+1 4 (8) → 754 (8)
Znaczenie praw dostępu dla zwykłych plików jest intuicyjne, natomiast dla katalogów znaczenie jest następujące:
- jeżeli użytkownik ma prawo x do katalogu, to może do niego "wejść"
- jeżeli użytkownik ma prawo r do katalogu, to może wyświetlić jego zawartość
- jeżeli użytkownik ma prawo w do katalogu, to może w nim tworzyć i kasować pliki/katalogi
Powyższe prawa można interpretować w ten sposób, że jeśli np. użytkownik ma prawa -wx, to może w tym katalogu tworzyć pliki, poruszać się w obrębie jego struktury, ale nie może wyświetlić jego zawartości.
Oprócz podstawowego zestawu uprawnień (3×rwx) do każdego pliku/katalogu przyporządkowane są jeszcze 3 bity określające specjalne prawa dostępu:
- SetUserID, setuid, SUID – w przypadku SUIDa ustawionego na pliku wykonywalnym powoduje wykonanie pliku z UIDem ustawionym na właściciela pliku (jeżeli właścicielem zSUIDowanego pliku jest root, to uruchomienie takiego pliku z dowolnego konta spowoduje wykonanie tego pliku z poziomem uprawnień roota)
- SetGroupID, setgid, SGID – w przypadku pliku analogicznie do SUIDa; w przypadku SGIDa ustawionego na katalogu wszystkie nowe pliki/katalogi tworzone wewnątrz będą dziedziczyły po nim grupę zamiast po GID procesu tworzącego (BSD semantics)
- Sticky – w przypadku pliku wykonywalnego powoduje wymuszenie przechowywania jego kodu w pamięci (ustawianie Sticky na plikach wykonywalnych jest obecnie rzadko stosowane); w przypadku Sticky ustawionego na katalogu umożliwia kasowanie/zmianę nazwy elementów w nim zawartych tylko przez właściciela "Sticky-katalogu", właściciela pliku/katalogu w nim zawartego lub roota (w normalnym przypadku wewnątrz katalogu każdy może zmieniać nazwę i usuwać elementy o ile podstawowe uprawnienia to dopuszczają)
Przykłady
-rwsr-sr-x 1 root root 591344 2005-12-12 18:01 /usr/bin/cdrdao
cdrdao to program służący do wypalania płyt CD, do działania potrzebuje uprawnień roota, aby mógł być uruchamiany przez użytkowników innych niż root ma nadane uprawnienia SUID i SGID.
rwsr-sr-x odpowiada 6755(8)
drwxrwxrwt 13 root root 4096 2006-09-26 02:05 /tmp
ustawianie prawa Sticky na katalogu /tmp jest często spotykaną praktyką
rwxrwxrwt odpowiada 1777(8)
Do zmiany uprawnień do pliku służy polecenie chmod.
Poleceniem, którym można sprawdzić prawa dostępu do pliku i katalogu jest ls -l.