Postaram się w miarę przejrzysty sposób opisać system praw dostępu w systemie Unix (oczywiście pisząc Unix mam też na myśli Linux).
Każdy zbiór (plik) i kartoteka (katalog - ostatnio nie wiadomo dlaczego nazywany folderem) w systemie Unix posiada swojego właściciela i grupę do której należy. Każdy użytkownik może należeć do kilku grup. Prawa dostępu zależne są od tych informacji i można podzielić je na trzy grupy:
- prawa dostępu dla właściciela
- prawa dostępu dla grupy
- prawa dostępu dla wszystkich pozostałych (innych) nie spełniających dwóch poprzednich warunków
Tworzenie grup ma wiele zalet. W systemie często istnieje grupa audio lub cdrom, dodając użytkownika do takiej grupy nadajemu mu prawo odtwarzania dźwięków lub czytania z dysków cdrom.
Jak sprawdzić prawa?
Aby wylistować listę plików i katalogów i otrzymać informację o ich prawach należy wywołać komendę ls z parametrem -l, otrzymamy wynik podobny do przedstawionego poniżej:
kglaz@aristo300:~/public_html/drupal-5.0$ ls -l
-rw-r--r-- 1 kglaz users 27410 2007-01-15 13:11 CHANGELOG.txt
-rw-r--r-- 1 kglaz users 262 2006-08-09 09:42 cron.php
drwxrwxrwx 2 kglaz users 4096 2007-03-23 12:43 files
drwxr-xr-x 2 kglaz users 4096 2007-01-15 13:20 includes
-rw-r--r-- 1 kglaz users 872 2006-12-12 10:32 index.php
-rw-r--r-- 1 kglaz users 1431 2006-09-08 18:29 INSTALL.mysql.txt
-rw-r--r-- 1 kglaz users 1073 2006-09-08 18:29 INSTALL.pgsql.txt
-rw-r--r-- 1 kglaz users 22032 2007-01-10 11:15 install.php
Zestawienie kresek i liter "rwx" w pierwszej kolumnie to uprawnienia pliku lub katalogu, pozycja w trzeciej kolumnie to nazwa właściciela pliku (katalogu), natomiast w czwartej kolumnie wyświetlona jest nazwa grupy do jakiej należy plik (katalog).
Prześledzimy znaki w pierwszej kolumnie:
- Pierwszy znak oznacza typ pliku, gdy będzie to myślnik "-" to jest to zwykły plik, "d" oznacza, że mamy do czynienia z katalogiem. Te dwa znaki są najpopularniejsze, chociaż można zobaczyć w systemie więcej typów, np. "l" dowiązanie symboliczne.
- Trzy kolejne znaki to prawa właściciela.
- Trzy następne znaki to prawa grupy do jakiej należy plik (katalog).
- Trzy ostatnie znaki wskazują jakie uprawnienia do pliku (katalogu) mają osoby nie będące właścicielem pliku (katalogu) i nie należące do grupy do jakiej należy plik (katalog).
Kolejne litery w tych grupach oznaczają: "r" - prawo do odczytu, "w" - prawo do zapisu, "x" - prawo do wykonywania pliku.
Kreska zastępująca literkę oznacza brak tego prawa.
Dla przykładu:
-rw-r--r-- 1 kglaz users 872 2006-12-12 10:32 index.phpDo pliku index.php użytkownik kglaz ma prawo zapisu i odczytu, grupa users oraz wszyscy pozostali mogą czytać zbiór, ale nie mogą go modyfikować.
W przypadku katalogu znaczniki "rwx" mają nieco inne znaczenie: "r" - tylko do odczytu, mozna wykonać komendę ls aby zobaczyć zawartość katalogu; "w" - prawo do zapisu w katalogu, lecz aby móc zapisać musimy mieć jeszcze prawo "x" czyli możliwość zmiany wejścia do katalogu komendą cd.
Dla przykładu:
drwxr-x--- 2 kglaz biuro 4096 2007-03-23 12:43 filesWłaściciel katalogu files użytkownik kglaz może w nim tworzyć, usuwać i zmieniać pliki oraz katalogi. Użytkownicy należący do grupy biuro mogą tylko czytać zawartość tego katalogu, natomiast wszyscy pozostali nie mają żadnych praw do niego.
Zmiana uprawnień
Do zmiany praw plików i katalogów wykorzystamy polecenie chmod. Możemy nowe prawa nadawać dwoma metodami: symboliczną lub binarną.
Metoda symboliczna polega na wykorzystaniu liter "u" (użytkownicy), "g" (grupy) i "o" dla pozostałych, oraz znaków "+" (nadających prawa), "-" (odbierających prawa), "=" (ustawiając dokładne prawa).
Najwygodniej przedstawić metodę symboliczną na przykładach:
kglaz@aristo300:~/public_html/drupal-5.0$ ls -l | grep index.php
-rw-r--r-- 1 kglaz kglaz 872 2006-12-12 10:32 index.php
kglaz@aristo300:~/public_html/drupal-5.0$ chmod u-w,g+w,o-r index.php
kglaz@aristo300:~/public_html/drupal-5.0$ ls -l | grep index.php
-r--rw---- 1 kglaz kglaz 872 2006-12-12 10:32 index.php
kglaz@aristo300:~/public_html/drupal-5.0$ chmod a+x index.php
kglaz@aristo300:~/public_html/drupal-5.0$ ls -l | grep index.php
-r-xrwx--x 1 kglaz kglaz 872 2006-12-12 10:32 index.php
kglaz@aristo300:~/public_html/drupal-5.0$ chmod u=rw,g=r,o=r index.php
kglaz@aristo300:~/public_html/drupal-5.0$ ls -l | grep index.php
-rw-r--r-- 1 kglaz kglaz 872 2006-12-12 10:32 index.php
Zamiast skomplikowanej metody symbolicznej (analiza powyższego przykładu) można użyć prostszej metody binarnej.
Kolejne znaki przyjmują wartości liczbowe: r = 4, w = 2, x = 1, a podczas nadawania praw sumujemy interesujące nas wartości np:
chmod 644 index.phpspowoduje, że prawa naszego zbioru będą wyglądać tak:
-rw-r--r-- 1 kglaz kglaz 872 2006-12-12 10:32 index.phpa jest to związane z wyliczeniem: r+w=6 r=4 r=4.
natomiast:
chmod 750 index.phpspowoduje, że obraz praw będzie wyglądać tak:
-rwxr-x--- 1 kglaz kglaz 872 2006-12-12 10:32 index.phpa jest to związane z wyliczeniem: r+w+x=7 r+x=5 0.
Zmiana grupy
Jeśli jesteś właścicielem pliku (katalogu) to możesz zmienić jego grupę. Musi być spełniony jeszcze jeden warunek - musisz być członkiem grupy na jaką zmieniasz plik (katalog).
Żeby sprawdzić do jakich grup należysz wydaj komendę groups.
Aby zmienić teraz grupę zbioru wydaj komendę chgrp:
chgrp biuro index.php
zmieniamy w ten sposób grupę zbioru index.php na biuro, a użytkownicy należący do tej grupy będą mieli prawa do pliku zgodne z ustawieniami w kolumnie odpowiedzialnej za grupę.
Możesz też zmienić grupę wszystkich plików lub katalogów wydając komendę chgrp z parametrem -R, np:
chgrp -R biuro files
Komenda ta zmieni grupę biuro we wszystkich plikach, katalogach i podkatalogach znajdujących się w kartotece files.
Oczywiście artykuł ten nie wyczerpuje wszystkich operacji związanych ze zmianami praw ale powinien być przydatny początkującemu użytkownikowi podczas pracy z systemami Unix.





Odpowiedzi
wt., 16/10/2007 - 09:22
Bardzo zaciekawil mnie Wasz blog.
wt., 16/10/2007 - 09:26
To cieszę się :) ta stronka ma być moją prywatną pomocą i spisem notatek "aby znowu nie szukać czegoś co już robiłem". Jeżeli komuś jednocześnie się przyda to dobrze.
pozdrawiam
Krzysiek
Dodaj nową odpowiedź