Uprawnienia

W systemie Unix/Linux każdy plik posiada właściciela (ang. owner) i grupę (ang. group) do której jest przyporządkowany. Właściciel pliku, grupa oraz wszyscy inni użytkownicy mają określone uprawnienia dostępu do każdego pliku w systemie.
Uprawnieniami tymi są: możliwość odczytu (ang. read), zapisu (ang. write) oraz wykonywania (ang. execute).
Chcąc uzyskać informacje o właścicielu, grupie i uprawnieniach danych plików można użyć polecenia ls -l
Przykład:
> ls -la
drwxr-xr-x  3 marek users 4096 sty  5 03:40 .
drwxr-xr-x  9 marek users 4096 sty  4 23:34 ..
-rwxr-xr-x  1 marek users 7312 sty  4 23:54 a.out
-rw-r--r--  1 marek users  572 sty  4 23:54 main.c
drwxr-xr-x  2 marek users 4096 sty  5 03:40 wynik
W kolejnych kolumnach otrzymujemy następujące informacje:
typ i uprawnienia pliku, ilość dowiązań do pliku, nazwa właściciela, nazwa grupy, rozmiar w bajtach, data i godzina modyfikacji oraz nazwa pliku.
Pierwszy znak oznacza typ pliku: d to katalog, - to zwykły plik.
Następne 9 znaków określa uprawnienia pliku (r - odczyt, w - zapis, x - wykonywanie) dla trzech zbiorów użytkowników: dla właściciela, dla grupy oraz dla wszystkich innych.
Z powyższego przykładu wynika, że plik main.c może być odczytywany przez wszystkich ale jego zawartość może zmieniać tylko właściciel. Plik a.out jest programem i można go wykonać dlatego nadane jest odpowiednie uprawnienie (x) dla wszystkich użytkowników. wynik jest katalogiem (d) i wszyscy mogą odczytywać jego zawartość (wyświetlać listę plików w katalogu) oraz mają prawa wykonywania (x), czyli mają dostęp do katalogu ale tylko właściciel może zmieniać zawartość tego katalogu (tworzyć lub usuwać pliki w tym katalogu).

Poniższe polecenia pozwalają na zmianę uprawnień plików:

chown
zmienia właściciela i grupę pliku

Postać: chown [opcje] uzytkownik[:grupa] plik...

chgrp
zmienia grupę użytkowników pliku

Postać: chgrp [opcje] grupa plik...

chmod
zmienia prawa dostępu do pliku

Postać: chmod [opcje] prawa plik...

Polecenie służy do ustawiania praw odczytu (r), zapisu (w) i wykonywania (x) pliku. Prawa te można nadać jednemu z trzech zbiorów użytkowników: właścicielowi pliku (u), grupie (g) i całej reszcie (o). Można też zmienić prawa wszystkim użytkownikom (a). Możliwe są trzy operacje: (+) dodanie uprawnień, (-) cofnięcie uprawnień lub (=) zastąpienie starych uprawnień nowymi.
Przykład:
> chmod a+r dane.txt
nadanie prawa do odczytu dla wszystkich
> chmod u-x *.sh
cofnięcie prawa do wykonywania przez właściciela plików o rozszerzeniu .sh
> chmod ug=r dane.txt
nadanie prawa do odczytu przez właściciela i grupę
> chmod ugo=rwx dane.txt
nadanie wszystkim uprawnień do odczytu, zapisu i wykonywania pliku - równoważne poleceniu
> chmod a=rwx dane.txt
Najważniejsze opcje:
-R zmień uprawnienia katalogów i całej ich zawartości
Przykład:
> chmod -R a+r ~
zezwoli wszystkim na możliwość czytania wszystkich plików w domowym katalogu

Innym sposobem nadawania uprawnień jest zapis numeryczny, np:
> chmod 703 dane.txt
Pierwsza cyfra określa uprawnienia użytkownika, druga - grupy a trzecia - reszty. Wartość (od 0 do 7) oznacza rodzaj uprawnień: wykonywanie (1), zapis (2) lub odczyt (4). W celu nadania kilku uprawnień należy zsumować odpowiednie cyfry. W powyższym przykładzie 7 oznacza nadanie praw do odczytu, zapisu i wykonywania (4+2+1) dla właściciela, 0 oznacza, że grupa nie posiada żadnych uprawnień a 3 odpowiada nadaniu prawa do zapisu i wykonywania (2+1) dla pozostałych użytkowników.

Marek Grochowski 2009-10-06