Prawa dostępu
Z Wikipedii
Prawa dosŧepu w systemach Unixowych mają na celu umożliwić określenie uprawnień odczytu, edycji i uruchamiania dla poszczególnych użytkowników. Mechanizm ten ma na celu zapewnienie bezpieczeństwa, stabilności i kontroli prywatności w systemach multi-user.
Prawa dostępu podzielone są na trzy kategorie:
- user (dla użytkownika, właściciela pliku)
- group (dla grupy właściciela pliku)
- other (dla pozostałych użytkowników)
Dla każdej z tych kategorii możliwe są trzy prawa dostępu, opisane trzema bitami:
- read (odczyt 100 (2) = 4 (8))
- write (zapis 010 (2) = 2 (8))
- execute (wykonywanie 001 (2) = 1 (8))
Standardowym symbolicznym sposobem zapisu uprawnień jest:
-rwxr-xr-- 1 fizyk fizyk 0 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
Zapis ósemkowy praw dostępu polega na przedstawieniu uprawnień za pomocą 3 lub 4 cyfrowej liczby ósemkowej.
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, został zSUIDowany i zSGIDowany aby mógł być uruchamiany przez użytkowników innych niż root
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ą
rwxrwxrxt odpowiada 1777(8)
Do zmiany uprawnień do pliku służy polecenie chmod.