Reklama

Prawa dostępu w systemie Unix

Erewhon, pt., 23/03/2007 - 19:38
Kategorie:

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:

  1. prawa dostępu dla właściciela
  2. prawa dostępu dla grupy
  3. 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.php

Do 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 files

Wł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.php

spowoduje, że prawa naszego zbioru będą wyglądać tak:

-rw-r--r--  1 kglaz kglaz   872 2006-12-12 10:32 index.php

a jest to związane z wyliczeniem: r+w=6 r=4 r=4.

natomiast:

chmod 750 index.php

spowoduje, że obraz praw będzie wyglądać tak:

-rwxr-x---  1 kglaz kglaz   872 2006-12-12 10:32 index.php

a 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.

Średnia: 4.6 (5 głosy(ów))

Odpowiedzi

koparka (niezweryfikowany) komentuje:
wt., 16/10/2007 - 09:22

Bardzo zaciekawil mnie Wasz blog.

Erewhon (niezweryfikowany) komentuje:
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ź

Zawartość pola nie będzie udostępniana publicznie.
  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Dozwolone znaczniki HTML: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <pre> <blockquote>
  • Znaki końca linii i akapitu dodawane są automatycznie.
CAPTCHA
To pytanie sprawdza czy jesteś człowiekiem, a aby zapobiec przed spamem.
Image CAPTCHA
Enter the characters shown in the image.