LDZ - Linux Dla Zielonych

Prawa dostępu

Linux, jak każdy system wielodostępny, posiada system kontroli dostępu. Opiera się on na posiadaniu praw dostępu i właściciela przez każdy z plików i katalogów. Te prawa to: prawo uruchamiania (x - eXecute), prawo czytania (r - Read), prawo zapisu (w - Write). Każdy plik i katalog posiada 3 komplety takich praw: dla właściciela pliku/katalogu (u - User), dla grupy, do której przypisany jest plik (g - Group), i dla wszystkich innych (o - Others). Jeśli wydasz polecenie ls -l powinieneś zobaczyć coś takiego:

-rw-r--r--   1 root     root        17212 Jan  7 12:33 webalizer.conf
-rw-r--r--   1 root     root        17227 Oct 30 23:26 webalizer.conf.sample
-rw-r--r--   1 root     root         3313 Mar 22  1999 wgetrc
-rw----r--   1 root     root        30737 Jan 27 18:11 wwwoffle.conf
-rw-r--r--   1 root     root          253 Mar 22  1999 zlogin
-rw-r--r--   1 root     root           86 Mar 22  1999 zlogout
-rw-r--r--   1 root     root          262 Mar 22  1999 zprofile
-rw-r--r--   1 root     root          481 Mar 22  1999 zshenv
-rw-r--r--   1 root     root          952 Mar 22  1999 zshrc
Kolejne pola oznaczają: prawa dostępu, liczbę dowiązań do danego pliku/katalogu (w przypadku plików zawsze 1), właściciela, grupę, rozmiar, datę utworzenia i nazwę. Nas w tym momencie interesują prawa dostępu.
-rw-r--r--   1 deith    root          952 Mar 22  1999 zshrc
|\ /\ /\ /
d u  g  o
d - tu pojawia się 'd' jeśli dany plik jest katalogiem.
u - prawa dla użytkownika (rwx - opisane wyżej)
g - prawa dla grupy (jw.)
o - prawa dla całej reszty(jw.)

W trzecim polu w każdym z bloków mogą być różne oznaczenia:
s - ustawione są bity setuid i setgid. Oznacza to, że program uruchomiony z ustawionymi takimi bitami będzie działał z prawami właściciela i ustawionej grupy, oraz prawo wykonywania (x)
S - jw. ale bez prawa wykonywania
t - ustawiony jest bit lepkości i prawo wykonywania
T - jw. ale bez prawa wykonywania
x - ustawione jest samo prawo wykonywania

Do zmiany praw dostępu służy polecenie chmod. Jego pierwszym parametrem jest właśnie prawo dostępu. Może być ono podane w dwóch formatach: np. u+x, co oznacza dodanie prawa wykonywania dla właściciela pliku. Może to też być np. o-r (usunięcie prawa odczytu dla pozostałych użytkowników). Ogólnie przed znakiem + lub - mogą być litery u, g lub o a po tym znaku r, w, x, s i t. Prawa mogą też być podane w formacie ósemkowym, tzn. będą to trzy cyfry oznaczające kolejno prawa dla użytkownika, grupy i całej reszty. Drugim parametrem jest nazwa pliku lub katalogu do zmiany praw. Przydatną opcją, podawaną przed prawem jest -R. Powoduje to włączenie rekurencyjnej zmiany praw, tzn. wraz z podkatalogami i plikami w nich się znajdującymi.
Drugim przydatnym poleceniem jest chown. Powoduje ono zmianę właściciela i grupy pliku/katalogu. Wystarczy podać jako drugi parametr użytkownik:grupa, a jako trzeci ten właśnie plik.

Jak widać, plik zshrc ma prawo czytania i zapisu dla właściciela pliku, czytania dla grupy root oraz dla całej reszty użytkowników. W ten sposób można konstruować systemy dostępu. Na przykład, jeśli chcemy dać dostęp do programu pine określonej grupie użytkowników, tworzymy grupę pine w pliku /etc/group przez dodanie odpowiedniej linijki, np. pine:x:510:user1,user2 (pola oddzielone dwukropkami to: nazwa:hasło (może go nie być):id (musi być unikalne):użytkownicy ) i ustawiamy grupę programu pine na pine :).