Uprawnienia w Linuksie: zapis liczbowy i symboliczny
Każdy plik i katalog w systemie Linux ma trzy zestawy uprawnień: dla właściciela, dla grupy i dla pozostałych użytkowników. W każdym zestawie są te same trzy prawa: odczyt oznaczany literą r, zapis oznaczany literą w oraz wykonanie oznaczane literą x. Polecenie ls z opcją długiego wypisu pokazuje je jako dziewięć znaków, po trzy na każdy zestaw, na przykład rwxr-xr--.
Zapis liczbowy jest skrótem tego samego. Prawo odczytu ma wartość 4, zapisu 2, a wykonania 1, więc każdy zestaw sumuje się do jednej cyfry od 0 do 7. Suma 7 oznacza pełne prawa, 5 to odczyt i wykonanie, a 4 to sam odczyt. Trzy cyfry ustawione po kolei opisują całość, dlatego chmod 754 i chmod u=rwx,g=rx,o=r robią dokładnie to samo.
Przy katalogu znaczenie praw jest inne niż przy pliku i to jest najczęstsze nieporozumienie. Odczyt pozwala wypisać zawartość katalogu, zapis pozwala tworzyć i usuwać w nim pliki, a wykonanie pozwala do niego wejść i sięgnąć po plik o znanej nazwie. Katalog bez prawa wykonania jest praktycznie nieużywalny, nawet jeśli ma ustawiony odczyt.
Przykład: co oznacza chmod 754
1
Pierwsza cyfra dotyczy właściciela. Siedem to 4 plus 2 plus 1, czyli odczyt, zapis i wykonanie: rwx.
2
Druga cyfra dotyczy grupy. Pięć to 4 plus 1, czyli odczyt i wykonanie, bez zapisu: r-x.
3
Trzecia cyfra dotyczy pozostałych. Cztery to sam odczyt: r--.
4
Razem daje to zapis rwxr-xr--, czyli dokładnie to, co pokazuje polecenie ls -l.
Najczęstsze pytania
Pełne prawa odczytu, zapisu i wykonania dla właściciela, grupy i wszystkich pozostałych użytkowników. Na serwerze jest to ustawienie niebezpieczne, bo pozwala dowolnemu użytkownikowi zmienić lub podmienić plik.
?
Jakie wartości mają r, w i x?
Odczyt (r) to 4, zapis (w) to 2, a wykonanie (x) to 1. Cyfra w zapisie ósemkowym jest sumą tych wartości, więc 6 oznacza odczyt i zapis, a 5 odczyt i wykonanie.
?
Co daje prawo wykonania na katalogu?
Pozwala wejść do katalogu i odwołać się do pliku o znanej nazwie. Bez niego nie da się otworzyć nawet pliku, do którego ma się pełne prawa, bo system nie przejdzie przez katalog nadrzędny.
?
Jakie uprawnienia ustawia się dla plików strony WWW?
Typowo 644 dla plików i 755 dla katalogów. Właściciel może wtedy edytować pliki, serwer je odczytać, a nikt postronny nie może ich nadpisać. Ustawienie 777 nie jest do tego potrzebne.
?
Co robi polecenie chmod u+x?
Dodaje właścicielowi pliku prawo wykonania i nie zmienia żadnego innego uprawnienia. Litera przed znakiem wskazuje, komu zmieniasz prawa: u to właściciel, g to grupa, o to pozostali, a to wszyscy. Znak plus dodaje prawo, minus je odbiera, a znak równości ustawia dokładnie podane prawa. Plik z uprawnieniami 644 po poleceniu chmod u+x ma 744.
?
Jak odczytać uprawnienia z wyniku polecenia ls -l?
Pierwszy znak to typ pliku: myślnik oznacza zwykły plik, a litera d katalog. Kolejne dziewięć znaków to trzy trójki rwx: dla właściciela, dla grupy i dla pozostałych. Zapis -rwxr-xr-- oznacza więc zwykły plik z uprawnieniami 754.
Gdzie ćwiczyć dalej
lekcje kursu o tym zagadnieniu
narzędzia z tej samej rodziny