CHMOD - czyli uprawnienia w plików
WSTĘP
Jak wiadomo w systemach takich jak UNIX czy Linux każdy użytkownik ma dostęp tylko do niektórych plików. Dzięki temu nikt nie może np. zmodyfikować cudzej strony. W tym krótkim tekście wyjaśnię zasady, na jakich są nadawane uprawnienia do plików. Polecam zapoznanie się z nimi zarówno osobom które chcą tworzyć własne skrypty CGI lub PHP, jak również osobom które chciałyby skorzystać z już istniejących.
Jeżeli dysponujemy dostępem przez FTP, możliwą do wykorzystania komendą będzie chmod.
UŻYTKOWNICY I GRUPY
Do każdego pliku jest przypisany identyfikator właściciela - użytkownika który stworzył ten plik, oraz grupy - czyli zbioru użytkowników którzy mają do tego pliku uprawnienia inne od pozostałych. Tak więc możliwe jest np. że do pliku aaa.txt może zapisywać i odczytywać tylko jego właściciel, odczytywać z niego dane może cała grupa, a pozostali użytkownicy nie mają do niego żadnych uprawnień. Możliwa jest też oczywiście sytuacja, w której uprawnienia użytkownika, grupy i pozostałych są takie same.
ODCZYT, ZAPIS I WYKONANIE
Istnieją 3 podstawowe prawa dostępu do pliku: prawo do odczytu, zapisu i uruchomienia pliku. Prawa te są nadawane niezależnie właścicielowi pliku, grupie do której plik należy i pozostałym użytkownikom. Aby dowiedzieć się, jakie uprawnienia są ustawione dla poszczególnych plików używa się komendy ls -l. Podaje ona przy każdym pliku w bieżącym katalogu nazwę właściciela i grupy do której należy plik, oraz nadane im uprawnienia. Uprawnienia są przedstawione w formie rwxr-x---. Litera oznacza ustawione uprawnienie, kreska brak uprawnienia. Grupy znaków (po 3 od lewej) oznaczają kolejno uprawnienia dla właściciela, grupy i pozostałych użytkowników. W tym przykładzie właściciel może zapisywać, czytać i uruchamiać plik, grupa może go tylko odczytać i uruchomić, natomiast pozostali użytkownicy nie mają dostępu do pliku. Do zmiany uprawnień służy komenda chmod nowe_uprawnienia nazwa_pliku. Nowe uprawnienia są zapisane jako 3-cyfrowa liczba. Cyfry od lewej oznaczają uprawnienia dla właściciela, grupy i pozostałych. Są one sumą cyfr 4 dla odczytu, 2 dla zapisu i 1 dla uruchomienia. Aby więc ustawić uprawnienia tak jak w powyższym przykładzie, należy wydać polecenie chmod 750 nazwa_pliku.
USTAWIANIE UPRAWNIEŃ W KLIENTACH FTP
Windows Commander - zaznacz plik, wybierz Change Attributes z menu File. Pojawi się okno w którym trzeba ustawić potrzebne uprawnienia i kliknąć ok. WS_FTP - zaznacz plik, kliknij prawym przyciskiem i wybierz chmod(UNIX). Pojawi się okno w którym trzeba ustawić potrzebne uprawnienia i kliknąć ok.
Uprawnienia w UNIX'ie - WSTĘP
UŻYTKOWNICY I GRUPY
Do każdego pliku jest przypisany identyfikator właściciela - użytkownika który stworzył ten plik, oraz grupy - czyli zbioru użytkowników którzy mają do tego pliku uprawnienia inne od pozostałych. Tak więc możliwe jest np. że do pliku aaa.txt może zapisywać i odczytywać tylko jego właściciel, odczytywać z niego dane może cała grupa, a pozostali użytkownicy nie mają do niego żadnych uprawnień. Możliwa jest też oczywiście sytuacja, w której uprawnienia użytkownika, grupy i pozostałych są takie same.ODCZYT, ZAPIS I WYKONANIE
Istnieją 3 podstawowe prawa dostępu do pliku: prawo do odczytu, zapisu i uruchomienia pliku. Prawa te są nadawane niezależnie właścicielowi pliku, grupie do której plik należy i pozostałym użytkownikom. Aby dowiedzieć się, jakie uprawnienia są ustawione dla poszczególnych plików używa się komendy ls -l. Podaje ona przy każdym pliku w bieżącym katalogu nazwę właściciela i grupy do której należy plik, oraz nadane
im uprawnienia. Uprawnienia są przedstawione w formie rwxr-x---. Litera oznacza ustawione uprawnienie, kreska brak uprawnienia. Grupy znaków (po 3 od lewej) oznaczają kolejno uprawnienia dla właściciela, grupy i pozostałych użytkowników. W tym przykładzie właściciel może zapisywać, czytać i uruchamiać plik, grupa może go tylko odczytać i uruchomić, natomiast pozostali użytkownicy nie mają dostępu do pliku.
Do zmiany uprawnień służy komenda chmod nowe_uprawnienia nazwa_pliku. Nowe uprawnienia są zapisane jako 3-cyfrowa liczba. Cyfry od lewej oznaczają uprawnienia dla właściciela, grupy i pozostałych. Są one sumą cyfr 4 dla odczytu, 2 dla zapisu i 1 dla uruchomienia. Aby więc ustawić uprawnienia tak jak w powyższym przykładzie, należy wydać polecenie chmod 750 nazwa_pliku.CZYJE UPRAWNIENIA MA SKRYPT
Program po uruchomieniu działa z uprawnieniami takimi, jak osoba która go uruchomiła. W przypadku skryptów PHP i CGI jest to zwykle specjalny użytkownik httpd, należący do grupy o tej samej nazwie. Istnieje jednak możliwość uruchomienia programu z uprawnieniami właściciela - aby było to możliwe właściciel musi ustawić w uprawnieniach do pliku pole zwane SUID (skrót od Set User ID on execution). Aby to zrobić należy wydać komendę chmod +s nazwa_pliku.
Jednak w przypadku skryptów PHP nie ma możliwości skorzystania z SUIDa. Jedynym sposobem nadania uprawnień do pliku dla skryptu PHP jest więc nadanie ich wszystkim, lub zmiana grupy do której plik należy na httpd i nadanie uprawnień grupie. Do zmiany grupy do której należy plik służy komenda chgrp nowa_grupa nazwa_pliku.USTAWIANIE UPRAWNIEŃ W KLIENTACH FTP
Windows Commander - zaznacz plik, wybierz Change Attributes z menu File. Pojawi się okno w którym trzeba ustawić potrzebne uprawnienia i kliknąć ok.
WS_FTP - zaznacz plik, kliknij prawym przyciskiem i wybierz chmod(UNIX). Pojawi się okno w którym trzeba ustawić potrzebne uprawnienia i kliknąć ok.
Parametry pliku:
u - user (użytkownik), g - group (grupa), o - others (reszta);
r - readable (odczyt), w - writable (zapis), x - executable (wykonanie);
Prawa dostępu w Linuksie
W systemie operacyjnym Linux każdy plik i katalog posiada zestaw praw określający, kto ma dostęp do pliku i jakie ma prawa. Każdy plik lub katalog może mieć prawo czytania (read), pisania (write), i wykonywania.Każde z tych praw dostępu reprezentowane jest odpowiednią literą i posiada przypisany odpowiedni parametr cyfrowy.
Litera Znaczenie Parametr Liczbowy r prawo odczytu 4 w prawo zapisu 2 x prawo uruchomienia 1 - brak praw dostępu 0 Do każdego pliku lub katalogu możemy wyszczególnić trzy zestawy takich praw:
- prawa właściciela
- prawa grupy
- prawa pozostałych użytkowników
Do wyświetlenia praw dostępu do plików możesz posłużyć się poleceniem
lsz opcją-l
przykład:[waldek@localhost waldek]$ ls -l
razem 944
-rw-r--r-- 1 waldek waldek 16561 sty 28 16:38 blackbox-menu
drwxrwxr-x 6 waldek waldek 4096 sty 25 19:18 loki/
lrw-rw-r-- 1 waldek waldek 86720 sty 26 15:56 snap.sna
Pierwsza kolumna składająca się z dziesięciu znaków opisuje prawa dostępu, przy czym pierwszy znak określa rodzaj pliku (np. - (minus) oznacza plik, d oznacza katalog, l dowiązanie itd).
Znak drugi, trzeci i czwarty określa prawa właściciela do pliku, znak piąty, szósty i siódmy określa prawa grupy do której należy plik,natomiast znak ósmy, dziewiąty i dziesiąty prawa innych użytkowników systemu.Jak widać w powyższym przykładzie do pliku
blackbox-menuprzypisano następujące uprawnienia:
prawo odczytu i zapisu dla właściciela (rw-) prawo odczytu dla grupy (r--) prawo odczytu dla pozostałych użytkowników (r--) Dodając do siebie odpowiednie paramatry, zestaw trzech praw możemy przedstawić
za pomocą jednej cyfry.Oto kilka najczęściej spotykanych kombinacji:
Prawa Wartość Znaczenie --- 0 brak praw r-- 4 prawo do zapisu rw- 6 prawo do zapisu i odczytu rwx 7 prawo do zapisu, odczytu i uruchomienia r-x 5 prawo do odczytu i uruchomienia --x 1 prawo do uruchomienia W ten sposób za pomocą trzech cyfr możemy przedstawić całkowity (tzn. trzy zestawy) zbiór praw dostępu do pliku (pierwsza cyfra - prawa właściciela, druga cyfra - prawa grupy, trzecia - prawa dla pozostałych użytkowników).
Prawa dostępu Wartość liczbowa Znaczenie -rw------- 600 prawo do odczytu i zapisu tylko dla właściciela pliku -rw-r--r-- 644 Prawo odczytu i zapisu dla właściciela oraz odczytu dla wszystkich pozostałych użytkowników. -rw-rw-rw- 666 prawo odczytu i zapisu dla wszystkich użytkowników. -rwx------ 700 wszystkie prawa (odczyt, zapis, uruchomienie) tylko dla właściciela pliku. -rwxr-xr-x 755 prawo do odczytu, zapisu i uruchomienia dla właściciela pliku oraz odczytu i uruchomienia dla wszystkich innych użytkowników -rwxrwxrwx 777 wszystkie prawa dla wszystkich użytkowników (ustawienie niebezpieczne) -rwx--x--x 711 prawo odczytu zapisu i uruchomienia dla właściciela pliku oraz prawo uruchomienia dla pozostałych użytkowników. drwx------ 700 Dotyczy prawa zapisu i odczytu w katalogu tylko przez właściciela. Katalogom zawsze musi być ustawione prawo dostępu x. drwxr-xr-x 755 Do takiego katalogu wszyskie prawa ma właściciel, a wszyscy pozostali użytkownicy mogą tylko odczytać jego zawartość. drwx--x--x 711 Wszystkie prawa ma właściciel. Katalog z takimi prawami dostępny jest także dla wszystkich pozostałych użytkowników, lecz jego zawartość jest przed nimi ukryta (polecenie ls nie wyświetli listy plików umieszczonych w tak oznaczonym katalogu). Aby odczytać plik użytkownik musi znać jego nazwę.