Skocz do zawartości
Zaloguj się, aby obserwować  
VIPserv.org

Dlaczego php-cgi może działać z partycją noexec a perl,python itd nie?

Polecane posty

Mam dla was trudne pytanie. Mam serwer apache z php działającym jako cgi oraz partycją /home na której są skrypty zamontowanej (/etc/fstab) z flagą noexec.

 

php-cgi realizowane jest przez następujące wpisy w httpd.conf

 

Action application/x-httpd-php5.cgi /cgi-sys/php5.cgi

AddHandler application/x-httpd-php5.cgi .php

 

i wszystko działa bardzo dobrze.

 

Chciałbym w ten sam sposób odpalić sobie perla i pytona w cgi w apaczu. Jednak nie działa gdy partycja jest zamontowana z noexec (Premature end of script headers). Natomiast działa bez problemów jesli zamontuje ją bez noexec. Google potwierdza że inni ludzie też mają identyczny problem i radzą sobie jedynie przez brak flagi noexec.

 

No więc czym się php różni od perl, pyton i innych że może działać w takiej kofniguracji ze skryptami na partycji noexec?

 

Perl, python itd wymagają atrybutu wykonywalności executable dla plików by działać, lecz czemu skoro można odpalić skrypty bez tego atrybutu w ten sam sposób w każdym z tych jezyków?

 

/usr/bin/php /home/skrypt.php

/usr/bin/perl /home/skrypt.pl

/usr/bin/python /home/skrypt.py

 

To nie jest proste pytanie wymagające szybkiej odpowiedzi. Prosze o nie udzielanie nie pełnych odpowiedzi, ponieważ pytania z zerową ilością odpowiedzi są częsciej oglądane i jest większe prawdopodobieństwo że ktoś kto zna prawidłową i pełną odpowiedź trafi na nie dzięki temu.

 

Prosze nie wskazywać alternatyw dla flagi noexec, to nie należy do tematu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Mam dla was trudne pytanie. Mam serwer apache z php działającym jako cgi oraz partycją /home na której są skrypty zamontowanej (/etc/fstab) z flagą noexec.

 

php-cgi realizowane jest przez następujące wpisy w httpd.conf

 

Action application/x-httpd-php5.cgi /cgi-sys/php5.cgi

AddHandler application/x-httpd-php5.cgi .php

 

i wszystko działa bardzo dobrze.

 

Chciałbym w ten sam sposób odpalić sobie perla i pytona w cgi w apaczu. Jednak nie działa gdy partycja jest zamontowana z noexec (Premature end of script headers). Natomiast działa bez problemów jesli zamontuje ją bez noexec. Google potwierdza że inni ludzie też mają identyczny problem i radzą sobie jedynie przez brak flagi noexec.

 

No więc czym się php różni od perl, pyton i innych że może działać w takiej kofniguracji ze skryptami na partycji noexec?

 

Perl, python itd wymagają atrybutu wykonywalności executable dla plików by działać, lecz czemu skoro można odpalić skrypty bez tego atrybutu w ten sam sposób w każdym z tych jezyków?

 

/usr/bin/php /home/skrypt.php

/usr/bin/perl /home/skrypt.pl

/usr/bin/python /home/skrypt.py

 

To nie jest proste pytanie wymagające szybkiej odpowiedzi. Prosze o nie udzielanie nie pełnych odpowiedzi, ponieważ pytania z zerową ilością odpowiedzi są częsciej oglądane i jest większe prawdopodobieństwo że ktoś kto zna prawidłową i pełną odpowiedź trafi na nie dzięki temu.

 

Prosze nie wskazywać alternatyw dla flagi noexec, to nie należy do tematu.

 

przy takiej konfiguracji

 

Action application/x-httpd-php5.cgi /cgi-sys/php5.cgi

AddHandler application/x-httpd-php5.cgi .php

 

wszystkie zapytania do plikow *.php zamieniane sa na /cgi-sys/php5/sciezka/do/pliku.php

wiec wywolywany jest /cgi-sys/php5 a nie skrypt php wiec nie ma problemow z noexec

 

Jak masz skonfigurowanego pythona/perla ?

 

Jesli jak zwykle cgi to serwer www probuje wykonywac skrypt bezposrednio co oczywscie sie nie uda.

 

--

Lazy

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
przy takiej konfiguracji

 

Action application/x-httpd-php5.cgi /cgi-sys/php5.cgi

AddHandler application/x-httpd-php5.cgi .php

 

wszystkie zapytania do plikow *.php zamieniane sa na /cgi-sys/php5/sciezka/do/pliku.php

wiec wywolywany jest /cgi-sys/php5 a nie skrypt php wiec nie ma problemow z noexec

--

Lazy

 

ScriptAlias /cgi-sys/ /usr/suexec/

Action application/x-httpd-php5.cgi /cgi-sys/php5.cgi

AddHandler application/x-httpd-php5.cgi .php

 

w takiej konfiguracji jest odpalany /usr/suexec/php5.cgi i w jakiś sposób wykonywany jest np /home/skrypt.php. Nie myśle zeby zapytanie było zamieniane na

/usr/suexec/php5.cgi /home/skrypt.php

raczej /usr/suexec/php5.cgi z ustawieniem zmiennych środowiskowych wg. standardu CGI

 

To jednak PHP działa, lecz perl i python i inne w TEJ SAMEJ konfiguracji TAK JAK NAPISAŁEM nie działają (także wielu ludziom wg google) jeśli /home jest w noexec.

 

Action application/x-httpd-perl /cgi-sys/perl

AddHandler application/x-httpd-perl .pl

 

Jeśli nie wierzysz że nie działa z noexec w /etc/fstab (a działa bez noexec) to możesz tylko sam przetestować.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
ScriptAlias /cgi-sys/ /usr/suexec/

Action application/x-httpd-php5.cgi /cgi-sys/php5.cgi

AddHandler application/x-httpd-php5.cgi .php

 

w takiej konfiguracji jest odpalany /usr/suexec/php5.cgi i w jakiś sposób wykonywany jest np /home/skrypt.php. Nie myśle zeby zapytanie było zamieniane na

/usr/suexec/php5.cgi /home/skrypt.php

raczej /usr/suexec/php5.cgi z ustawieniem zmiennych środowiskowych wg. standardu CGI

 

To jednak PHP działa, lecz perl i python i inne w TEJ SAMEJ konfiguracji TAK JAK NAPISAŁEM nie działają (także wielu ludziom wg google) jeśli /home jest w noexec.

 

Action application/x-httpd-perl /cgi-sys/perl

AddHandler application/x-httpd-perl .pl

ten jakis sposob to wlasnie zamiana zapytania na takie jak napisalem, cgi slozy do uruchamiania wykonywalnych programow, a tu wykonywalne jest php5.cgi a nie sam skrypt php, ale /cgi-sys/php?/skrypt.php juz wykonywalne jest

 

to co napisales jest w sumie tez prawdziwe bo php5.cgi dowiaduje sie jaki byl adres zapytania wlasnie ze zmiennych srodowiskowych ustalanych przez mod_cgi tyle ze dzieje sie to pozniej

 

http://pl2.php.net/security.cgi-bin

ale nie o to tu chodzi

 

a jak wyglada ls -l /usr/suexec ?

 

jest moze cos w logach, przyda sie moze LogLevel debug, dodanie ScriptLog logs/cgi_log tez moze pomoc

jakie sa prawa do skryptow perlowych, z jakimi prawami dziala apache

 

--

Lazy

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×