Kontynuując analogię metropolii z poprzedniego artykułu, dołóżmy kolejną cegiełkę: uprawnienia. Możesz je traktować jak prawa miejskie – określają, kto może wprowadzać zmiany w „infrastrukturze” systemu: tworzyć, modyfikować lub usuwać pliki i katalogi.
W świecie Linuksa uprawnienia definiują, kto ma dostęp do pliku lub katalogu i co może z nim zrobić. To jak punkt kontroli bezpieczeństwa dla Twoich danych – dzięki niemu tylko autoryzowani użytkownicy mogą czytać, edytować lub uruchamiać wybrane zasoby.
Rodzaje uprawnień w Linuksie

Najczęściej podejrzysz uprawnienia poleceniem ls -la. Za prawa dostępu odpowiada pierwsza kolumna. Na początku może wyglądać to chaotycznie, ale gdy poznasz logikę znaków, wszystko stanie się proste.

Uprawnienia plików i katalogów składają się z trzech zestawów:
- Uprawnienia właściciela (owner) – co może zrobić właściciel pliku
- Uprawnienia grupy (group) – co mogą zrobić użytkownicy z tej samej grupy
- Uprawnienia innych (others) – co mogą zrobić pozostali użytkownicy
Typ pliku – pierwszy znak
Pierwszy znak w zapisie uprawnień informuje, z jakim typem obiektu masz do czynienia:
- d – katalog
- – – plik
- l – dowiązanie symboliczne (symlink)
Prawa rwx — co oznaczają?
Kolejne znaki to trzy bloki po trzy litery: rwx rwx rwx.
- r (read) – pozwala odczytać zawartość pliku (lub listę plików w katalogu)
- w (write) – pozwala modyfikować lub usuwać
- x (execute) – pozwala uruchomić plik (program/skrypt)
W Linuksie nie ma obowiązkowych rozszerzeń typu .exe – o wykonywalności decyduje głównie bit x.
Jak zmienić uprawnienia? Polecenie chmod
Aby zmieniać uprawnienia, używa się polecenia chmod. Właściciel pliku (nawet jako zwykły użytkownik) może zmieniać uprawnienia do swoich plików.
Są dwie metody:
- metoda liczbowa (ósemkowa)
- metoda słowna (r/w/x)
Obie działają tak samo – wybierz tę, która jest dla Ciebie wygodniejsza.
Metoda liczbowa (ósemkowa)
W metodzie liczbowej zmiany uprawnień, należy za pomocą liczb ósemkowych podać, jakie uprawnienia mają być przypisane dla właściciela, grupy oraz pozostałych użytkowników. Zauważ, że suma odpowiednich liczb daje zestaw odpowiadających im uprawnień.

Każda cyfra to suma wartości:
- 4 = r
- 2 = w
- 1 = x
Dostępne zestawy:
- 0 – brak uprawnień (—)
- 1 – wykonywanie (–x)
- 2 – zapis (-w-)
- 3 – zapis + wykonywanie (-wx)
- 4 – odczyt (r–)
- 5 – odczyt + wykonywanie (r-x)
- 6 – odczyt + zapis (rw-)
- 7 – odczyt + zapis + wykonywanie (rwx)
Jeśli chcesz zmieniać uprawnienia rekurencyjnie dla całego katalogu, użyj przełącznika -R.
Metoda słowna (u/g/o/a)
W metodzie słownej, należy najpierw podać, dla kogo prawa dostępu mają zostać zmienione.

Dostępne są cztery wartości:
- u – właściciel
- g – grupa
- o – inni
- a – wszyscy
Możesz je łączyć, np. ugo.
Potem używasz:
- + aby dodać uprawnienie
- – aby odebrać uprawnienie
Na końcu wskazujesz uprawnienia:
- r – odczyt
- w – zapis
- x – wykonywanie
Zmiana właściciela i grupy
Zmiana właściciela (chown)
Czasami potrzebujesz zmienić właściciela pliku albo od razu właściciela i grupę – służy do tego chown.

Przykład zmiany właściciela i grupy jednocześnie:
chown ola:Informatycy /home/patryk/dokumenty/plik.txt
Zmiana grupy (chgrp)
Jeśli chcesz zmienić tylko grupę, możesz użyć chgrp.

Specjalne uprawnienia: SUID, SGID i Sticky Bit
Poza standardowym rwx istnieją też trzy specjalne bity, które zwiększają funkcjonalność i bezpieczeństwo.
SUID (Set User ID)
Jeśli plik ma ustawiony SUID, uruchamia się z uprawnieniami właściciela pliku, a nie osoby, która go uruchamia. To popularne przy programach wymagających wyższych uprawnień.
Przykład: aby zwykli użytkownicy mogli korzystać z ping (właściciel: root), stosuje się SUID.

Po ustawieniu SUID w miejscu x dla właściciela pojawia się s.
SGID (Set Group ID)
SGID działa podobnie, ale dotyczy grupy.
- Dla plików: program uruchamia się z uprawnieniami grupy będącej właścicielem pliku
- Dla katalogów: nowe pliki i katalogi dziedziczą grupę katalogu nadrzędnego
To świetne rozwiązanie dla katalogów współdzielonych w zespole. Ustawiając bit SGID w tym katalogu, wszelkie pliki utworzone w nim dziedziczą grupę będącą właścicielem katalogu, a nie grupę użytkownika tworzącego plik. Dzięki temu wszystkie pliki w katalogu zachowają wspólną grupę, co ułatwia bezproblemową współpracę między członkami grupy.

Po ustawieniu SGID w miejscu x dla grupy pojawia się s.
Sticky Bit
Sticky Bit działa na katalogach i ogranicza usuwanie znajdujących się w nim plików. Taki plik może usunąć tylko:
- właściciel pliku
- właściciel katalogu
- root
Najczęściej spotkasz to w katalogu /tmp.
Przykład: Można utworzyć publiczny katalog na serwerze internetowym, do którego użytkownicy mogą przesyłać swoje pliki. Ustawiając Sticky Bit w tym katalogu, użytkownicy mogą swobodnie przesyłać pliki, ale po przesłaniu tylko właściciel pliku, właściciel katalogu lub użytkownik root może usuwać lub modyfikować te pliki. Zapobiega to modyfikowaniu lub usuwaniu plików przesłanych przez innych użytkowników, zapewniając bezpieczeństwo plików.

Po ustawieniu Sticky Bit w miejscu x dla „innych” pojawia się t.
Zmienna umask
Polecenie umask ustawia domyślne uprawnienia dla nowo tworzonych plików i katalogów.
Linux zwykle startuje od maksymalnych wartości:
- 666 dla plików
- 777 dla katalogów
Wartość umask mówi, jakie prawa należy odjąć (zamaskować).
Sprawdzenie umask
umask
Często domyślnie zobaczysz 022, co oznacza:
- właściciel: pełne prawa
- grupa i inni: bez zapisu (czyli zwykle odczyt, a dla katalogów także wejście/execute)
Ustawienie nowego umask
umask 077
To oznacza:
- właściciel: pełne prawa
- grupa i inni: brak dostępu
Umask na stałe (po restarcie)
umask jest trzymany w pamięci, więc po restarcie znika. Aby ustawić go na stałe, dodaj go do pliku .profile w katalogu użytkownika.

Jak czytać wartości umask?
W umask ustawiasz wartości, które odejmujesz od maksymalnych uprawnień:
- 0 – nic nie odejmuj
- 1 – odejmij x
- 2 – odejmij w
- 3 – odejmij w i x
- 4 – odejmij r
- 5 – odejmij r i x
- 6 – odejmij r i w
- 7 – odejmij r, w i x