Uprawnienia - bity specjalne

Damian Stlemach

Oprócz trzech rodzajów uprawnień, czyli odczytu, zapisu i wykonania, mamy jeszcze do dyspozycji w systemach opartych na jądrze Linux, tak zwane bity specjalne. Są nimi tak zwany lepki bit (t), a także user ID (SuID - u), oraz group ID (GuID - g). Dla zwyczajnych zjadaczy chleba, najistotniejsze jest działania lepkiego bitu, gdyż ma on bardzo fajne zastosowanie. Załóżmy, że mamy katalog, w którym pliki zapisuje kilku użytkowników. Muszą oni mieć prawa zapisu do tego katalogu, bo inaczej nie będą mogli w nim tworzyć zasobów. To jednak niesie za sobą pewne zagrożenie. Otóż, jeśli mają prawa do zapisu, no to mogą też usuwać zawartość, nawet jeśli nie są właścicielem. Konsekwencje mogą być takie, że poszczególni użytkownicy mogą sobie wzajemnie, umyślnie lub też nieumyślnie kasować zasoby. Lepki bit działa tak, że zabrania usuwania zasobów, których użytkownik nie jest właścicielem. Lepki bit można ustawić wydając polecenie:

sudo chmod a+t nazwa_katalogu/pliku (lub ścieżka)

Wówczas, do już nadanych uprawnień dopisany zostanie lepki bit. Można również dodać lepki bit podczas nadawanie uprawnień. Przykładowo jeśli wszyscy mają mieć pełna prawa do danego zasobu z jednoczesnym dodaniem lepkiego bity można polecenie wykonać tak:

sudo chmod 1777 nazwa_katalogu/pliku (lub ścieżka)

Jedynka od lewej strony to przypisanie lepkiego bitu. Po dopisaniu lepkiego bitu w uprawnieniach pojawia się na końcu litera t:

drwxrwxrwt 2 damian damian 4096 Nov  5 08:38 katalog1

Innym specjalnym rodzajem bitu jest GuID. Działa on tak, że nadaje identyfikator grupy właściwa katalogu wszystkim nowo utworzonym katalogom, bez względu na to kto je tworzy. Dzięki temu wszystkie nowoutworzone zasoby będą miały identyfikator grupy właściciela katalogu nadrzędnego. Jest to opcja przydana kiedy na jednym katalogu pracuje kilku użytkowników, który nie są oni członkami danej grupy, a chcemy aby katalogi, które tworzą miały prawa, nadane dla grupy właściciela. GuID możemy również przypisać na dwa sposoby:

sudo chmod g+s nazwa_katalogu/pliku (lub ścieżka)

lub

sudo chmod 2777 nazwa_katalogu/pliku (lub ścieżka)

Po nadaniu bitu specjalnego GuID w uprawnieniach katalogu/pliku, na którym wykonaliśmy polecenie prawo do wykonania dla grupy (x) zmieniło się na S:

drwxrwsrwx 2 damian damian 4096 Nov  5 08:38 katalog1

Podobnie działa ostatni bit specjalny o nazwie SuID. Kiedy nadajmy taki bit dla pliku, no to wówczas user, który go wykonuje, może to być jakiś skrypt na przykład, robi to na prawach właściciela, a nie na swoich. Analogicznie, SuID możemy przypisać na dwa sposoby:

sudo chmod u+s nazwa_katalogu/pliku (lub ścieżka)

lub

sudo chmod 4777 nazwa_katalogu/pliku (lub ścieżka)

Po nadaniu bitu specjalnego SuID, w uprawnieniach katalogu/pliku, na którym wykonaliśmy polecenie prawo do wykonania dla właściciela (x) zmieniło się na S:

drwsrwsrwx 2 damian damian 4096 Nov  5 08:38 katalog1

Mechanizmy bitów specjalnych GuID oraz SuID należy stosować z rozwagą, bo jeśli zostaną użyte w sposób nieprzemyślany to niewłaściwi użytkownicy mogą mieć pełne prawa do plików katalogów, a nie zawsze tego chcemy.