W systemie Linux uprawnienia są jednym z podstawowych mechanizmów odpowiedzialnych za bezpieczeństwo i porządek w pracy z plikami, katalogami oraz uruchamianymi programami. Określają one, kto może odczytywać dane, kto może je modyfikować, a kto ma prawo je uruchamiać lub usuwać. Dzięki temu system może działać w sposób przewidywalny i bezpieczny, nawet wtedy, gdy korzysta z niego wielu użytkowników jednocześnie.
Znaczenie uprawnień wykracza jednak daleko poza sam techniczny podział dostępu. To właśnie one pomagają chronić ważne pliki systemowe przed przypadkowym usunięciem, zabezpieczają prywatne dane użytkowników i ograniczają skutki błędów lub nieautoryzowanych działań.
Nieprawidłowo ustawione uprawnienia mogą prowadzić do poważnych problemów – od niedziałających aplikacji, przez błędy w skryptach, po luki bezpieczeństwa. Dlatego zrozumienie, jak działają uprawnienia w Linuxie, jest istotne nie tylko dla administratorów, ale również dla zwykłych użytkowników. Nawet podstawowa wiedza w tym zakresie pozwala lepiej zarządzać systemem, unikać typowych pomyłek i świadomie dbać o bezpieczeństwo swoich danych. W praktyce uprawnienia są jednym z tych elementów Linuxa, które warto znać od samego początku, ponieważ mają bezpośredni wpływ na codzienną pracę z systemem.
Jak działają uprawnienia w Linuxie
Każdy plik i katalog ma:
właściciela
jedną grupę
uprawnienia dla trzech kategorii:
user (właściciel)
group (grupa)
others (wszyscy pozostali)
Przykład:
-rw-r--r--
To oznacza:
owner: rw- – odczyt i zapis
group: r-- – tylko odczyt
others: r-- – tylko odczyt
Uprawnienia rwx
W systemie Linux podstawowe uprawnienia zapisywane są za pomocą liter r, w i x, które oznaczają odpowiednio prawo do odczytu, zapisu i wykonywania pliku lub katalogu. Taki zapis pozwala szybko określić, jakie działania może wykonywać właściciel, grupa oraz pozostali użytkownicy:
Dla plików:
r = read – można odczytać plik
w = write – można zmieniać plik (modyfikować treść, usunąć)
x = execute – można uruchomić plik
Dla katalogów:
r = można odczytać listę plików w katalogu
w = można dodawać i usuwać wpisy w katalogu
x = można wejść do katalogu i po nim się poruszać
Uprawnienia liczbowe: 755, 644, 775
Uprawnienia w Linuxie można także przedstawić w formie liczbowej, gdzie każda cyfra jest sumą wartości przypisanych do odczytu, zapisu i wykonywania. Dzięki temu zapisowi, jak w przypadku 755 czy 644, można w prosty i wygodny sposób ustawiać prawa dostępu do plików i katalogów.
4 = read
2 = write
1 = execute
Sumujemy:
7 = 4+2+1 = rwx
6 = 4+2 = rw-
5 = 4+1 = r-x
4 = r--
Przykłady:
755 = rwxr-xr-x
644 = rw-r--r--
775 = rwxrwxr-x
Najczęściej spotkasz:
644 dla plików
755 dla katalogów i skryptów wykonywalnych
775 dla katalogów współdzielonych w zespole
Polecenie chmod – zmiana uprawnień do katalogów i plików
Do zmiany uprawnień używamy polecenia chmod. Służy ono do zmiany uprawnień plików i katalogów. Pozwala w prosty sposób określić, kto może dany plik odczytywać, modyfikować lub uruchamiać, zarówno przy użyciu zapisu symbolicznego, jak i numerycznego.
Polecenie chmod 644 plik.txt ustawia uprawnienia tak, aby właściciel pliku mógł go odczytywać i modyfikować, natomiast grupa i pozostali użytkownicy mieli wyłącznie prawo do odczytu. To jeden z najczęściej spotykanych wariantów dla zwykłych plików tekstowych i konfiguracyjnych.
Polecenie chmod 755 skrypt.sh nadaje właścicielowi prawo do odczytu, zapisu i uruchamiania pliku, a grupie oraz pozostałym użytkownikom pozwala na odczyt i wykonanie. Taki zestaw uprawnień jest często stosowany w przypadku skryptów i programów, które mają być uruchamiane także przez innych użytkowników.
Polecenie chmod g+w plik.txt dodaje grupie prawo zapisu do pliku, nie zmieniając pozostałych wcześniej ustawionych uprawnień. Dzięki temu użytkownicy należący do tej grupy mogą nie tylko odczytywać plik, ale również go edytować.
Polecenie chmod o-r plik.txt usuwa prawo odczytu dla pozostałych użytkowników, czyli tych, którzy nie są ani właścicielem pliku, ani członkami przypisanej grupy. Jest to prosty sposób na ograniczenie dostępu do pliku i zwiększenie prywatności danych.
Rekurencyjna zmiana uprawnien dla katalogu i jego zawartości
Możemy również zmienić uprawnienia rekurencyjnie dla katalogu oraz jego zawartości. Ponizsze polecenie obejmuje nie tylko sam katalog, ale też wszystkie znajdujące się w nim pliki i podkatalogi. Dzięki temu zmiana jest stosowana od razu do całej struktury.
chmod -R ug+rwX katalog
W powyższym przykładzie rekurencyjnie nadajemy użytkownikowi i grupie prawo do odczytu i zapisu, a prawo do wykonywania tylko tam, gdzie jest potrzebne, czyli dla katalogów i plików wykonywalnych.
Duże X oznacza, że prawo wykonywania zostanie nadane wszystkim katalogom oraz tylko tym plikom, które już wcześniej miały ustawione x. Dzięki temu można zmieniać uprawnienia rekurencyjnie w bezpieczniejszy sposób, bez ryzyka przypadkowego nadania prawa uruchamiania wszystkim plikom.
Polecenia chown i chgrp – zmiana właściciela i grupy pliku
Polecenia chown i chgrp służą w systemie Linux do zmiany właściciela oraz grupy przypisanej do pliku lub katalogu. Dzięki nim można precyzyjnie określić, kto zarządza danym zasobem i którzy użytkownicy będą mogli korzystać z niego zgodnie z nadanymi uprawnieniami:
Polecenie chown user:grupa plik.txt pozwala jednocześnie zmienić właściciela pliku oraz przypisaną do niego grupę. Jest to przydatne wtedy, gdy plik powinien należeć do konkretnego użytkownika i być dostępny dla określonej grupy.
Polecenie chown -R www-data:www-data katalog wykonuje tę samą operację rekurencyjnie, czyli nie tylko dla samego katalogu, ale również dla wszystkich plików i podkatalogów znajdujących się w jego wnętrzu. Takie rozwiązanie często stosuje się przy konfiguracji katalogów używanych przez serwer www.
Polecenie chgrp nowagrupa katalog służy wyłącznie do zmiany grupy przypisanej do katalogu, bez ingerowania w jego właściciela. Dzięki temu można łatwo dostosować dostęp do zasobu dla określonej grupy użytkowników.
Umask – uprawnienia dla nowo tworzonych plików
Umask (user file-creation mode mask) to mechanizm w systemach operacyjnych typu Unix/Linux, który określa domyślne uprawnienia nowych plików i katalogów tworzonych przez użytkownika lub proces. Działa on jako maska odejmująca część uprawnień z maksymalnego zestawu, jaki mógłby zostać nadany nowemu obiektowi w systemie plików.
Podczas tworzenia nowego pliku lub katalogu system przyjmuje początkowo maksymalny zestaw uprawnień (zwykle 666 dla plików i 777 dla katalogów), a następnie stosuje wartość umask, która określa, które z tych uprawnień mają zostać wyłączone.
Mechanizm działania polega więc na odejmowaniu uprawnień wskazanych przez maskę umask od wartości bazowej. Na przykład jeśli umask ma wartość 022, oznacza to, że zapisywanie dla grupy i innych użytkowników zostaje zablokowane. W rezultacie nowo utworzony plik otrzyma uprawnienia 644 (rw-r–r–), a katalog 755 (rwxr-xr-x). Dzięki temu tylko właściciel może modyfikować plik, natomiast inni użytkownicy mogą go jedynie odczytywać.
Sticky bit to specjalne ustawienie katalogu, które chroni pliki przed usuwaniem przez innych użytkowników. W katalogu z ustawionym sticky bitem plik może usunąć tylko jego właściciel, właściciel katalogu lub administrator root, nawet jeśli wiele osób ma prawo zapisu do tego katalogu.
Więcej na temat sticky bit dowiesz się z tego artykułu:
Setuid (SUID) to specjalne ustawienie pliku wykonywalnego, które sprawia, że program uruchamia się z uprawnieniami właściciela pliku, a nie użytkownika, który go uruchomił. Rozwiązanie to stosuje się wtedy, gdy program musi tymczasowo wykonać operacje wymagające wyższych uprawnień.
Setgid (SGID)
Setgid (SGID) to specjalne ustawienie, które dla plików wykonywalnych powoduje uruchamianie programu z uprawnieniami grupy pliku, a dla katalogów sprawia, że nowe pliki i podkatalogi dziedziczą jego grupę. Dzięki temu łatwiej utrzymać spójne uprawnienia w katalogach współdzielonych przez wielu użytkowników.
SUID i SGID mogą być bardzo przydatne, ale z punktu widzenia bezpieczeństwa wymagają dużej ostrożności, ponieważ pozwalają programowi działać z uprawnieniami wyższymi niż te, które ma użytkownik uruchamiający plik. Dlatego powinny być nadawane wyłącznie tam, gdzie są rzeczywiście potrzebne, z możliwie ograniczonym dostępem, ponieważ błędnie ustawione mogą stać się źródłem poważnych luk bezpieczeństwa.
ACL – Access Control Lists
Klasyczne uprawnienia w Linuxie są proste i wygodne, ale mają swoje ograniczenia, ponieważ plik może mieć tylko jednego właściciela i jedną przypisaną grupę. Gdy trzeba nadać różne prawa kilku konkretnym użytkownikom lub grupom, znacznie lepiej sprawdza się ACL (Access Control Lists), które pozwalają precyzyjniej zarządzać dostępem.
Dzięki ACL można przyznać wybrane uprawnienia konkretnemu użytkownikowi albo grupie bez konieczności zmiany właściciela pliku czy tworzenia dodatkowych grup. W praktyce jest to bardzo przydatne rozwiązanie, ponieważ często pozwala szybciej i wygodniej rozwiązać problem dostępu niż kombinowanie z samymi standardowymi uprawnieniami Linuxa.
Author: Joanna
Piszę kody, które (zazwyczaj) działają. Tresuję Wordpressa, kodzę z Reactem, zgłębiam świat DevOps i klikam w konsoli Linuxa. Hobbystycznie optymalizuję kod, bo lenistwo to najczystsza forma produktywności. Staram się nie zwariować między bugiem a deadlinem.