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