System uprawnień w Linuksie może wydawać się na początku nieco zagmatwany. W tym wpisie postaramy się w zwięzły i prosty sposób pokazać jak on działa.
Prawo własności
Mamy trzy „poziomy” uprawnień jeśli chodzi o wykonywanie operacji na plikach i katalogach:
user – użytkownik (właściciel)
group – grupa
others – inni (wszyscy inni)
Wszystkie pliki (włączając w to linki symboliczne oraz gniazda unixowe), katalogi oraz procesy mają przyporządkowanego użytkownika (właściciela) oraz grupę.
Uprawnienia
Użytkownik (właściciel), grupa oraz wszyscy inni mają oddzielny zestaw uprawnień do pliku lub katalogu. Są trzy uprawnienia:
read (r) – odczyt
write (w) – zapis
execute (x) – wykonanie
Pliki
read – odczyt – możliwość odczytu zawartości pliku, włączając w to otwarcie pliku w edytorze w trybie tylko do odczytu.
write – zapis – daje możliwość modyfikacji lub usunięcia pliku.
execute – wykonanie – możliwość uruchomienia pliku jako programu (np. skryptu bash, skryptu python lub php)
Katalogi
read – odczyt – prawo do wyświetlenia zawartości katalogu np. ls -lah
write – zapis – możliwość tworzenia plików w katalogu oraz usunięcia katalogu
execute – wykonanie – daje możliwość wejścia do katalogu (polecenie cd
)
Uprawnienia możemy wyświetlić za pomocą komendy ls
np ls -al
Pierwsza kolumna zawiera ciąg znaków określający uprawnienia:
Przykładowo dla pliku:
-rw-r--r-- 1 root root 0 10-18 19:10 plik1.txt
Wyjaśnienie uprawnień.
- rwx r-x r-- | |_| |_| |_| | \ \ \_ prawa dla innych (others) - tylko czytanie | | | | | |_ prawa dla grupy (group) - czytanie i wykonywanie | | | |_ prawa dla użytkownika - właściciela (user) - czytanie, zapis, wykonanie | |_ oznaczenie typu pliku ( - plik, d katalog, l link)
Dla katalogu (pierwszy znak to oznaczenie katalogu litera d – directory)
drwxr-xr-x 2 root root 4096 10-18 19:10 katalog1 | | | | | | | | | | | | | nazwa pliku/katalogu | | | | | | | | | | | data modyfikacji | | | | | | | | | rozmiar | | | | | | | grupa | | | | | właściciel | | | liczba hard-linków | typ pliku i uprawnienia
Zmiana właściciela
Właściciela oraz grupę do której przypisany jest plik lub katalog możemy zmienić poleceniem chown
:
chown [-R] użytkownik /scieżka chown [-R] użytkownik:grupa /ścieżka
Opcja -R
powoduje zmianę rekursywną, czyli dla wszystkich podkatalogów i plików znajdujących się w /scieżka
Zmiana uprawnień
Za pomocą polecenia chmod
możemy zmienić uprawnienia dla pliku/katalogu:
chmod [-R] u=rwx,g=rw,o=r /ścieżka chmod [-R] u+x,g+wx,o-w /ścieżka
Możemy rownież skorzystać z postaci liczbowej praw dostępu.
4 – read – odczyt
2 – write – zapis
1 – execute – wykonanie
Wartości się sumują, czyli:
7 = odczyt (4), zapis (2) i wykonanie (1)
6 = odczyt (4) i zapis (2)
5 = odczyt (4) i wykonanie (1)
4 = odczyt
Przykładowo:
chmod 755 katalog1 chmod 644 plik1.txt
Przykłady w poniższej tabeli.
Prawa dostępu | Wartość liczbowa | Opis |
---|---|---|
-rw------- | 600 | Tylko właściciel ma prawo do odczytu i zapisu. |
-rw-r--r-- | 644 | Właściciel ma prawo do zapisu i odczytu, a reszta tylko prawo odczytu. |
-rw-rw-rw- | 666 | Wszyscy mają prawo do odczytu i zapisu. |
-rwx------ | 700 | Tylko właściciel ma prawo do odczytu, zapisu, uruchomienia. |
-rwxr-xr-x | 755 | Właściciel ma wszystkie prawa do pliku, reszta tylko prawo do odczytu i uruchomienia. |
-rwxrwxrwx | 777 | Wszyscy mają pełne prawa (nie zalecane). |
-rwx--x--x | 711 | Wszystkie prawa ma właściciel, reszta tylko prawo uruchomienia. |
drwx------ | 700 | Właściciel katalogu ma pełne prawa do niego |
drwxr--r-- | 744 | Właściciel ma pełne prawa do katalogu, reszta ma prawo do odczytu. |