UWAGA: Strona zawiera materiały archiwalne. Większość artykułów dotyczy Joomla! 1.0
Start arrow Instalacje arrow Prawa dostępu
Prawa dostępu Drukuj Email

Katalogom i plikom stanowiącym zasoby serwisu Joomla! nadawane są atrybuty ustalające, kto i w jakim zakresie może z nich korzystać. Z problemem praw dostępu będziesz się spotykać w Joomla! często. Dlatego potrzebujesz niezbędnego minimum wiedzy na ten temat, by rozumieć, co się czasem dzieje i nie popełnić błędów.

Czym są prawa dostępu?

Prawa dostępu to prawa do wykonywania operacji na plikach i katalogach:

  • czytaj [read]: prawo do odczytu pliku lub przeglądania katalogu,
  • zapisz [write]: prawo do zapisu w pliku lub zmieniania zawartości katalogu
  • wykonaj [execute]: prawo wykonywania skryptów lub otwarcia katalogu.

Wyjaśnienie: Prawo wykonywania w przypadku katalogów pozwala tylko na wejście do katalogu. Aby zobaczyć, co znajduje się w środku, czyli przeglądać katalog, potrzebne jest prawo do odczytu. Natomiast w przypadku plików prawo wykonywania oznacza, że można dany plik uruchomić jako program.

W systemach UNIX-owych (a wiec i w środowisku Linux) użytkownicy mogą posiadać te prawa jako:

  • właściciele [owner]
  • grupa [group]
  • inni [other lub world]

Prawa właściciela to prawa procesu lub realnego użytkownika, który stworzył plik czy katalog albo któremu własność została przypisana. Właściciel jest dysponentem praw - może je przypisywać sobie, grupie i wszystkim innym (całemu światu).

Prawa grupy to prawa nadane wszystkim procesom lub realnym użytkownikom z grupy, której członkiem jest właściciel.

Prawa innych to prawa każdego innego procesu lub realnego użytkownika, który nie jest właścicielem i nie należy do grupy.

Organizacja praw w środowiskach UNIX-owych pozwala na definiowanie różnych praw dla każdej z tych trzech kategorii użytkowników.

Tę kwestię trzeba dobrze zrozumieć. Z faktu że jedno, dwa lub wszystkie trzy prawa (a więc zarówno do czytania, zapisu jak i uruchamiania) nadano innym nie wynika, że posiada je grupa czy właściciel. Z faktu, że jedno, dwa lub wszystkie trzy prawa nadano grupie również nie wynika, że posiada je właściciel. Brzmi to nieco nielogicznie, bo przecież właściciel należy do grupy. I owszem - tym samym posiada prawa grupy, ale indywidualnie - jako właściciel - może nie mieć żadnego z praw. Rozjaśnimy ów brak zależności w dalszej części.

Prawa dostępu do plików i katalogów pokazywane są w systemach UNIX-owych w dwojaki sposób:

  • jako trzy sekwencje znaków sygnalizujące poszczególne uprawnienia: r (read), w (write), x (xecute) oraz myślnik (-) wskazujący na brak danego uprawnienia, pierwsza sekwencja wskazuje prawa właściciela, druga prawa grupy, a trzecia prawa innych, np.
 
rwx            r-x       r--
  • jako trzy cyfry z zakresu od 0 do 7, z których każda zastępuje jedną sekwencję, a pierwsza oznacza prawa właściciela, druga prawa grupy, a trzecia prawa innych, np.
 
7              5         4

Wartość jest sumą liczb odpowiadających poszczególnym prawom dostępu (r=4, w=2, x=1). np. 754: właściciel ma prawo odczytu, zapisu i wykonywania, grupa ma prawo odczytu i wykonywania, ale nie ma praw zapisu, inni mają tylko prawa odczytu.

 
właściciel    grupa     inni
  r w x       r - x     r - -
    7           5         4

Odczytywania praw wyrażonych cyframi łatwo się nauczyć. Jeśli użytkownik ma wszystkie prawa, to ich suma wynosi 7, jeśli ma prawa do odczytu i zapisu, to ich suma wynosi 6, jeśli ma prawa do odczytu i wykonywania, to ich suma wynosi 5, jeśli ma tylko prawa do odczytu, to oznaczone są cyfrą cztery, zaś prawa do zapisu i wykonywania, cyfrą 3. Cyfra 2 oznacza tylko prawa do zapisu, cyfra 1 tylko do wykonywania, a 0 brak praw. Spójrzmy, skąd wzięło się oznaczenie 754 w przykładzie powyżej:

 
właściciel   grupa   inni
  r w x      r - x   r w x
  4 2 1      4 0 1   4 0 0

Bo...

 
  4+2+1 4+0+1 4+0+0
=   7     5     4

Komplikacje

Gdyby wszystko było tak proste, jak się po bliższym zapoznaniu wydaje, świat byłby pełen uczonych. Niestety, w szczegółach może nie diabełek, ale na pewno kryją się tajemnice i? kłopoty. Tak jest i z prawami dostępu.

Gdy sami gospodarzymy na swym własnym serwerze, możemy łatwo utożsamić siebie - użytkowników systemu z uruchamianymi procesami. To my otwieramy, odczytujemy, zapisujemy, uruchamiamy. W rzeczywistości także i w tym przypadku rzeczy są bardziej skomplikowane. Możemy wszakże tutaj przyjąć, że serwer i uruchamiane na nim procesy działają z naszymi prawami użytkownika - właściciela. Ta stosunkowo prosta sytuacja zmienia się na serwerach współdzielonych.

Po pierwsze, z tego samego serwera korzysta wielu różnych realnych użytkowników.

Nie byłby to problem, gdyby każdy realny użytkownik konta na serwerze zawsze był właścicielem swoich procesów. Ale serwer www korzystajacy z PHP jako modułu Apache albo w trybie FastCGI działa na wielu kontach jako jeden użytkownik (i właściciel procesów).Na różnych serwerach różnie się nazywa - nobody, www, apache - nie ma to większego znaczenia. Znaczenie ma fakt, że jest to inny użytkownik niż właściciel konta, ba!, faktycznie użytkownik z kręgu inni (świat).

Po drugie, każdy realny użytkownik korzysta zwykle co najmniej z dwóch usług - serwera WWW oraz serwera FTP. Dobrą wiadomością jest, że konfiguracja FTP umożliwia przypisanie własności każdego konta konkretnemu realnemu użytkownikowi. Źródłem problemów wiadomość gorsza - użytkownik FTP nie jest tożsamy z użytkownikiem konta WWW, choć fizycznie, w znaczeniu osoby, jest to jeden klient klienta firmy hostingowej.

Po trzecie, na wielu serwerach stosowane jest specjalne oprogramowanie, pomagajace rozwiązywać problemy praw własności (a przede wszystkim związane z nimi problemy bezpieczeństwa). Oprogramowanie takie jak suExec, php_suExec, PHPsuExec, umożliwia "przełączanie użykowników" (stąd su - switch user), tak że Apache może się "przełaczać" na konkretnego realnego użytkownika konta i działać z jego prawami.

Rozwiązanie komplikacji

I tym razem mamy zarówno dobre, jak i gorsze wiadomości. Dobrą jest ta, że rzeczywiście profesjonalni administartorzy potrafią skonfigurować serwery tak, by zaoszczędzić użytkownikom problemów z prawami własności, a przynajmniej ograniczyć do niezbędnego minimum, a gdy trzeba pomogą w ich rozwiązaniu. Dobrą wiadomością jest również i ta, że Joomla 1.5 został wyposażony w możliwość włączenia obsługi FTP, innymi słowy, że może - jeśli tak zostanie skonfigurowany (najlepiej już podczas instalacji) - może działać z prawami użytkownika FTP, co eliminuje kłopoty na wielu serwerach. Kompetentny administrator, wiedząc, że zamierzasz korzystać z Joomla!, doradzi najlepiej, czy włączanie obsługi FTP jest potrzebne.

Natomiast w przypadku problemów można spróbować stawić im czoła. Niejednokrotnie z dobrym skutkiem. Warunkiem niezbędnym jest jednak zrozumienie, jak działa system praw, jakie zagrożenia niesie ze sobą manipulowanie przy prawach dostepu oraz znajomość sposobów radzenia sobie w takich sytuacjach.

Bezpiecznie i niebezpiecznie

Pamiętając o tym, że bezpieczeństwo w otwartej sieci jest ustawicznym zadaniem do realizacji, a nie stanem, który można osiągnąć, musimy zadbać o przestrzeganie w każdym momencie zasady nadawania najmniejszych koniecznych uprawnień.

Generalnie prawa do plików standardowo są ustawione w Joomla! na 644, a prawa do katalogów na 755. Oznacza to, że w przypadku plików prawo do zapisu i odczytu ma tylko właściciel, a grupa i inni mają tylko prawo do odczytu. Natomiast w przypadku katalogów właściciel ma wszystkie prawa, a grupa i inni prawo odczytu i wykonywania, bez praw zapisu.

Takie względnie bezpieczne ustawienia nie zawsze jednak pozwalają czy to na instalację rozszerzeń, czy przesyłanie za pomocą interfejsu Joomla! plików, np. graficznych, czy nawet na zapisywanie zmian w konfiguracji globalnej (a więc w pliku configuration.php) lub konfiguracji niektórych rozszerzeń, gdy ustawienia przechowywane są w plikach (np. parametry szablonu).

Dlaczego jest niezapisywalny?

Sygnałem problemów może być złowieszcza, bo wyświetlana czerwonym kolorem etykieta komunikująca, że jakiś katalog czy katalogi są niezapisywalne. Ale bywa też, że zarówno z komunikatu, jak i z dokładniejszego przeglądu wynika, że plik czy katalog powinien być zapisywalny, a nie jest i zamiast udanej instalacji czy operacji zapisywania pliku otrzymujemy komunikaty typu:

 
Wczytywanie nieudane, docelowy katalog jest niezapisywalny.
Pojawił się problem z wczytywaniem pliku na serwer.
Nie udało się zmienić uprawnień do wczytanego pliku.
Nie udało się skopiować pliku instalacyjnego PHP.
Nie udało się skopiować pliku deinstalacyjnego PHP.
Nie udało się otworzyć pliku.
Ostrzeżenie: Nie udało się usunąć pliku
Błąd: nie można zapisać pliku konfiguracyjnego

Bywa, że są to również mniej zrozumiałe komunikaty w języku angielskim:

 
failed to open stream: No such file or directory in (Błąd? Brak pliku lub katalogu w...
Powód 1 - serwer jest "inny"

Oczywiście, nie chodzi o to, że skrypty umieszczono gdzieś na innym serwerze, ale że serwer nie jest ani twoim użytkownikiem, a więc właścicielem, ani nie należy do tej samej grupy co właściciel, ale jest z kręgu "inni", Bardzo możliwe, że w takim przypadku wystarczy na czas instalacji zmienić uprawnienia na 757, w gorszym przypadku na jeszcze bardziej niebezpieczne 777, a w najgorszym, ale nie beznadziejnym, że żadna z tych zmian nic nie da. W przypadku pliku, np. konfiguracyjnego wystarczyć może ustawienie 646 albo 666. Natychmiast po zakończeniu operacji wymagającej tych zmian należy przywrócić standardowe ustawienie praw na 755 dla katalogów i 644 dla plików.

Powód 2 - użytkownik "niezupełnie przełączony"

Jeżeli na serwerze zainstalowano jakiś program przełączający użytkowników (np. suExec) standardowe ustawienie prawa do katalogów na 755 powinno w zupełności wystarczyć. Gdyby jednak sprawiało kłopoty, można spróbować najpierw ustawienia 775 lub 757, a w ostateczności 777, które najprawdopodobniej też nie przyniesie rezultatu z podowu trzeciego, ale dla pewności...

O ile z prawami do katalogów raczej problemów być nie powinno, to ustawienie 644 dla plików często trzeba będzie ustawić na 755 lub 775. Dotyczy to pliku configuration.php w przypadku konfiguracji globalnej bądź plików nazwanych zwykle nazwakomponentu.config.php (zwykle w katalogu administracyjnym) albo params.ini.

Powód 3 - zawłaszczona własność

Wydawałoby się, że skoro serwer jest "inny", to ustawienie praw do odczytu, zapisu i edycji dla innych powinno problem rozwiązywać. Wszak "inni" to wszyscy inni oprócz właściciela i tych z grupy, do której właściciel należy. Wyroki serwera zdają się wszakże niezbadane, bo oto zdarza się - i to wcale nie tak rzadko - że do katalogów i plików stworzonych przez Joomla! nie ma dostępu przez FTP i odwrotnie - Joomla! nie może się dostać do katalogów stworzonych przez FTP. Co więcej - próba zmiany uprawnień za pomocą klienta FTP kończy się niepowodzeniem.

Jeśli w panelu zarządzania swoim kontem masz dostęp do menedżera plików, możesz rozwiązać kłopot samodzielnie. Zadanie polega na zresetowaniu praw własności. Na przykład w panelu administracyjnym DirectAdmin znajdziesz na stronie menedżera plików takie opcje:

Odnośnik do Menedżera plików w DirectAdmin

Jak widać na ilustracji, prawa do katalogów ustawione są zgodnie z zalecanymi dla Joomla! Natomiast przy drugim i trzecim katalogu mamy możliwość rekursywnego zresetowania (usunięcia) właściciela katalogu (Reset Ownership). Rekursywnie (Recursively) znaczy w katalogu i wszystkich podkatalogach. Wystarczy nacisnąć polecenie Recursively, by katalogi stały się w równym stopniu dostępne dla serwera WWW, co serwera FTP.

Odnośnik do Menedżera plików w DirectAdmin

Jeśli nie dysponujemy menedżerem plików w swoim panelu zarządzania kontem na serwerze, nie pozostaje nic innego, jak zwrócić się o pomoc do administratora serwera. Prosimy fachowo o zresetowanie praw własności bądź ustawienie praw własności dla katalogów tak, by użytkownikiem były i Joomla! (serwer www) i FTP.

Zmieniony ( 20.04.2010. )
 
« poprzedni artykuł   następny artykuł »