--=REKLAMA=--

Prawa dostępu i phpsuexec

Z Joomla!WikiPL

Ikona przetlumacz.png
 Uwaga o zawartości

Ta strona wymaga przetłumaczenia lub jest w trakcie tłumaczenia! Pomoc jest mile widziana. Ostatnio edytowane przez Zwiastun (dyskusja. Data edycji: Sat, 14 Dec 2013 20:30:36 +0000


Co to jest phpSuExec

Na wielu serwerach Apache PHP uruchamiane jest jako moduł. Jest to domyślna metoda instalacji. Wielu usługodawców korzysta z tego rozwiązania, bo jest domyślne i być może nie zdają sobie oni sprawy, że można skonfigurować PHP jako CGI. Uruchamianie PHP w trybie CGI zwiększa bezpieczeństwo, gdyż eliminuje wspólną własność plików i katalogów.

PHPSuExec provides the facility to have all scripts running the relevant user account instead of under the Web Servers account. This facility allows the server Administrators to isolate and manage malicious or runaway script usage very quickly, avoiding unwanted or un-authorised scripts from running for a lengthy period of time.

Co robi phpSuExec?

Uprawnienia 777

With non- phpSuExec configurations, PHP runs as an Apache Module it executes as the user/group of the webserver which is usually "nobody", "httpd" or "apache". Under this mode, files or directories that you require your php scripts to be able to write to need 777 permissions (read/write/execute at user/group/world level). This is not very secure because it allows the webserver to write to the file, it also allows anyone else to read or write to the file.

Under phpSuExec configurations, PHP running as a CGI with "suexec" enabled (su = switch user, allowing one user to "switch" to another if authorised) - Your php scripts now execute under your own user/group level. Files or directories that you require your php scripts to be able to write to no longer need to have 777 permissions. In fact, 777 permissions are no longer allowed, having 777 permissions on your scripts or the directories they reside in will not run and will instead cause a "500 internal server error" when attempting to execute them, this is done to protect you from someone abusing your scripts. Your scripts and directories can now, only have a maximum of 755 permissions (read/write/execute by you, read/execute by everyone else).

Żegnaj ".htaccess", a witaj ".ini"

Gdy PHP działa jako moduł Apache, niektóre ustawienia PHP można korygować za pomocą pliku .htaccess. Ustawienia poczynione w pliku .htaccess są dziedziczone przez wszystkie podkatalogi, dopóty nie ma w tych podkatalogach następnego pliku .htaccess. W takim przypadku decydujące znaczenie mają ustawienia określone w tym nowym pliku.

Przykładowo, w pliku .htaccess można następująco skonfigurować opcję "magic_quotes_gpc":

    php_value magic_quotes_gpc on

Gdy PHP działa jako CGI, nie można korygować jego ustawień w .htaccess, ponieważ Apache ich nie zrozumie. Co więcej, wywołanie pliku .htaccess, w którym znajdą się ustawienia konfigurujące PHP rozpoczynające się przedrostkiem "php_value", spowoduje błąd "500 Wewnętrzny błąd serwera". Stanie się tak, ponieważ serwer nie potrafi zinterpretować zmiennych odnoszących się do PHP.

Jeżeli PHP działa w trybie CGI, WSZYSTKIE dyrektywy odnoszące się do PHP muszą być usunięte z plików .htaccess, aby uniknąć wewnętrznego błędu serwera. Zamiast niego można stworzyć i stosować do korygowania konfiguracji PHP lokalne pliki php.ini.

Co to jest plik php.ini?

Plik php.ini jest plikiem konfiguracyjnym, odczytywanym przez serwer podczas uruchamiania PHP, zawierającym wszystkie ustawienia uwzględniane podczas działania PHP.

Jak stworzyć plik php.ini

Aby utworzyć plik php.ini, posłuż się dowolnym edytorem tekstowym, dodaj potrzebne reguły i zapisz plik. Roboczą wersję pliku możesz zapisać pod dowolną nazwą, np. php.ini.txt, aby zapewnić poprawny transfer za pomocą FTP. Po skonfigurowaniu wszystkich potrzebnych ustawień prześlij plik do katalogu, w którym umieszczone są skrypty i przemianuj go na php.ini.

Przykładowo możesz umieścić w pliku php.ini ustawienie "magic_quotes_gpc":

  magic_quotes_gpc = on

W wielu przypadkach potrzebne będzie skopiowanie tego samego pliku php.ini do różnych podkatalogów. W przeciwieństwie do pliku .htaccess, który konfiguruje reguły obejmujące swoim zasięgiem macierzysty katalog i wszystkie umieszczone w nim podkatalogi, zasięg oddziaływania reguł zawartych w lokalnym php.ini ograniczony jst tylko do macierzystego katalogu.

Mój skrypt wymaga 777

So what about php scripts that say they require 777 permissions on some of their directory or files to work, such as a Joomla!, Forums, photo galleries and alike? Co w takim

Due to the transparent nature of phpSuExec this is solved very simply, any directories stated as requiring to be "writable" or "777" can safely be set to 755 (the maximum) instead. This is because, now that the web server runs under your own user account, only your own user account needs full write and execute permissions.

These rules have been applied to .cgi and .pl files historically and are now being applied php files also.

Oryginalna treść została zreprodukowana z wielu różnych źródeł w Internecie.

Dziękujemy za wkład

» Stefan Wajda [zwiastun],

Źródło „http://wiki.joomla.pl/index.php?title=Prawa_dostępu_i_phpsuexec&oldid=39289