YGREG.COM - Uprawnienia w UNIX'ie 

29.07.2004
Nowa oferta hostingowa.

29.07.2004
Kurs XPath.

13.10.2002
Poprawiony problem z oznaczaniem przeczytanych wiadomości na forum.

13.06.2002
PHP z Zend Engine 2 już dostępne!

17.02.2002
Zmiany w organizacji serwisu.








Początek strony

(C)opyright 1997-2007
by Grzegorz Plebański
INDEX I ARTYKUŁY I SKRYPTY I DOWNLOAD

Dodaj stronę
do ulubionych

Artykuły i kursy
   PHP
   XML
   CGI
   HTML
   Inne

Skrypty PHP
   Komunikacja
   Księgi gości
   Statystyki
   Głosowania
   Bannery
   Inne
Skrypty CGI

Download



Uprawnienia w UNIX'ie





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. Aby móc skorzystać ze wszystkich podanych komend potrzebny będzie dostęp do shella (przez telnet lub ssh). Jeżeli dysponujemy tylko dostępem przez FTP, jedyną 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.



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. Uwaga: nie każdy serwer na to pozwala. 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. Obecnie jednak na wielu serwerach skrypty PHP sa wykonywane z uprawnieniami wlasciciela, niezaleznie od ustawienia SUID.



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.


UWAGI KOŃCOWE

         Mam nadzieję, że ten tekst wyjaśnił podstawy systemu uprawnień do plików. Pamiętaj jednak, że przy nadawaniu skryptom uprawnień trzeba bardzo uważać. Zwróć uwagę, że np. skrypt z ustawionym SUIDem ma możliwość zapisu do wszystkich Twoich plików. Sprawdź więc dobrze, czy nie ma w nim błędów, które pozwoliłyby na uszkodzenie lub modyfikację plików, do których skrypt nie powinien sie odwolywac.


Grzegorz 'Ygreg' Plebański
ygreg@ygreg.com
http://www.ygreg.com