PHP käivitamine kasutaja õigustes: erinevus redaktsioonide vahel

Allikas: Kuutõrvaja
Mine navigeerimisribaleMine otsikasti
ZWoz (arutelu | kaastöö)
Resümee puudub
Anne (arutelu | kaastöö)
Resümee puudub
1. rida: 1. rida:
Apache suexec on programm mis lisati versioonis 1.2 ja annab apache kasutajatele v2imaluse k2ivitada
Apache suexec on programm, mis lisati versioonis 1.2 ja annab apache kasutajatele võimaluse käivitada
cgi ja ssi programme kasutaja id'ga mis erinev kui veebiserver id. Noramaalselt toimivad k2ik skriptid veebiserveri 2igustes.
cgi ja ssi programme kasutaja id'ga, mis erineb veebiserveri id-st. Normaalselt toimivad kõik skriptid veebiserveri õigustes.
Kahjuks v2imaldab see startida ainult cgi skripte selliselt. J2rgnev pala kirjeldab kuidas saada iga serveris asuv php tykk samuti k2ima
Kahjuks võimaldab see nõnda startida ainult cgi skripte. Käesolev pala kirjeldab, kuidas saada iga serveris asuv php tükk samuti käima
antud kasutaja 2igustes. Näites kasutatav PHP on 5. versioon, kuid kasutada võib ka 4.
antud kasutaja õigustes. Näites kasutatav PHP on 5. versioon, kuid kasutada võib ka neljandat.
trellidega on näidetes tähistatud käsuviip.
Trellidega (#) on näidetes tähistatud käsuviip.


'''tarkvara install'''
'''tarkvara install'''


apache koos suexeci'iga install:
Installeerime apache koos suexec-ga:


   # cd /usr/ports/www/apache2
   # cd /usr/ports/www/apache2
   # make  WITH_SUEXEC_MODULES="YES"  install  
   # make  WITH_SUEXEC_MODULES="YES"  install  


seej2rel installime php:  
Seejärel installeerime php:  


   # cd /usr/ports/lang/php5
   # cd /usr/ports/lang/php5
   # make install clean
   # make install clean


PHP installeerimisel küsitakse täiendavaid parameetreid, valida tuleb CGI ja FastCGI tugi.
PHP installeerimisel küsitakse täiendavaid parameetreid; valida tuleb CGI ja FastCGI tugi.
Apache moodulit pole vaja, kui täiendavalt paralleelselt seda ei plaani kasutada
Apache moodulit pole vaja, kui seda ei plaanita täiendavalt paralleelselt kasutada.


ning siis fastcgi install:
Järgneb fastcgi installeerimine:


   # cd /usr/ports/www/mod_fastcgi
   # cd /usr/ports/www/mod_fastcgi
   # make install clean
   # make install clean


peale installi saame kontrollida olemasolu ja parameetreid selliselt
Peale installeerimist saame kontrollida olemasolu ja parameetreid selliselt:


  # suexec -V
  # suexec -V
37. rida: 37. rida:




Nagu n2ha soovib suexec ,et k2ik skriptid mida tema abil k2ivitatakse asuksid /usr/local/www/data
Nagu näha, soovib suexec, et kõik skriptid, mida tema abil käivitatakse, asuksid kataloogis /usr/local/www/data
ei hakka DOC_ROOT muutma ja loome testi sinna.
Ei hakka DOC_ROOT muutma ja loome testi sinna.


'''konfiguratsioon apachel'''
'''konfiguratsioon apachel'''


muudame httpd.conf, vajadusel lisame:
Muudame httpd.conf, vajadusel lisame:


  LoadModule suexec_module libexec/apache2/mod_suexec.so
  LoadModule suexec_module libexec/apache2/mod_suexec.so
  LoadModule fastcgi_module    libexec/apache2/mod_fastcgi.so
  LoadModule fastcgi_module    libexec/apache2/mod_fastcgi.so


tekitasin veel konfi sellise sektsiooni
Tekitasime veel konfi sellise sektsiooni:


  <IfModule mod_fastcgi.c>
  <IfModule mod_fastcgi.c>
55. rida: 55. rida:




tekitame virtualhostid
Tekitame virtualhostid


  <VirtualHost *:80>
  <VirtualHost *:80>
95. rida: 95. rida:
'''Skript wrapperiks'''
'''Skript wrapperiks'''


varasemalt virtualhostis sidusime igas .php laiendi kindla cgi skriptiga mida suexeciga k2ivitame
varasemalt virtualhostis sidusime igas .php laiendi kindla cgi skriptiga, mida suexeciga käivitame
viimaks ehitame skripti enda mis k2ivitatuna suexeci abil kasutaja 2igustes stardib php enda ja sellekaudu ka veebi.
viimaks ehitame skripti enda, mis käivitatuna suexeci abil kasutaja õigustes stardib php enda ja sellekaudu ka veebi.




106. rida: 106. rida:
  exec /usr/local/bin/php-cgi
  exec /usr/local/bin/php-cgi


kopeerime selle faili kasutajate katse ja katse 3 kaustadesse
Kopeerime selle faili kasutajate katse ja katse 3 kaustadesse (kataloogidesse):


/usr/local/www/data/katse/cgi-bin/php5-fcgi/usr/local/www/data/katse3/cgi-bin/php5-fcgi
/usr/local/www/data/katse/cgi-bin/php5-fcgi/usr/local/www/data/katse3/cgi-bin/php5-fcgi


teeme chown mõlemale failile kasutaja õigusesse
Muudame mõlema faili kasutajaõigusi chown käsuga:


chown katse:katse /usr/local/www/data/katse/cgi-bin/php5-fcgi
chown katse:katse /usr/local/www/data/katse/cgi-bin/php5-fcgi
118. rida: 118. rida:
'''testimine kasutamine'''
'''testimine kasutamine'''


testimiseks saab teha skripti
Testimiseks saab teha skripti


  < ?php
  < ?php

Redaktsioon: 20. detsember 2006, kell 15:36

Apache suexec on programm, mis lisati versioonis 1.2 ja annab apache kasutajatele võimaluse käivitada cgi ja ssi programme kasutaja id'ga, mis erineb veebiserveri id-st. Normaalselt toimivad kõik skriptid veebiserveri õigustes. Kahjuks võimaldab see nõnda startida ainult cgi skripte. Käesolev pala kirjeldab, kuidas saada iga serveris asuv php tükk samuti käima antud kasutaja õigustes. Näites kasutatav PHP on 5. versioon, kuid kasutada võib ka neljandat. Trellidega (#) on näidetes tähistatud käsuviip.

tarkvara install

Installeerime apache koos suexec-ga:

 # cd /usr/ports/www/apache2
 # make  WITH_SUEXEC_MODULES="YES"  install 

Seejärel installeerime php:

 # cd /usr/ports/lang/php5
 # make install clean

PHP installeerimisel küsitakse täiendavaid parameetreid; valida tuleb CGI ja FastCGI tugi. Apache moodulit pole vaja, kui seda ei plaanita täiendavalt paralleelselt kasutada.

Järgneb fastcgi installeerimine:

 # cd /usr/ports/www/mod_fastcgi
 # make install clean

Peale installeerimist saame kontrollida olemasolu ja parameetreid selliselt:

# suexec -V
 -D AP_DOC_ROOT="/usr/local/www/data"
 -D AP_GID_MIN=1000
 -D AP_HTTPD_USER="www"
 -D AP_LOG_EXEC="/var/log/httpd-suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=1000
 -D AP_USERDIR_SUFFIX="public_html"


Nagu näha, soovib suexec, et kõik skriptid, mida tema abil käivitatakse, asuksid kataloogis /usr/local/www/data Ei hakka DOC_ROOT muutma ja loome testi sinna.

konfiguratsioon apachel

Muudame httpd.conf, vajadusel lisame:

LoadModule suexec_module libexec/apache2/mod_suexec.so
LoadModule fastcgi_module     libexec/apache2/mod_fastcgi.so

Tekitasime veel konfi sellise sektsiooni:

<IfModule mod_fastcgi.c>
   FastCgiWrapper  /usr/local/sbin/suexec
   FastCgiConfig   -singleThreshold 1 -pass-header HTTP_AUTHORIZATION
</IfModule>


Tekitame virtualhostid

<VirtualHost *:80>
 SuexecUserGroup katse katse
 ServerAdmin kasutaja@nimi.ee
 DocumentRoot /usr/local/www/data/katse
 ServerName www.nimi.ee

ScriptAlias /php-fastcgi/ /usr/local/www/data/katse/
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fastcgi/php5-fcgi

</VirtualHost>
<VirtualHost *:80>
 SuexecUserGroup katse3 katse3
 ServerAdmin kasutaja@nimi.ee
 DocumentRoot /usr/local/www/data/katse3/cgi-bin
 ServerName test.nimi.ee

ScriptAlias /php-fastcgi/ /usr/local/www/data/katse3/cgi-bin
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fastcgi/php5-fcgi

</VirtualHost>

Alternatiivselt kataloogipõhiselt:

 SuexecUserGroup katse katse
 
 <Directory "/usr/local/www/data/cgi">
   Options +ExecCGI
   AddHandler fastcgi-script .cgi
   AddType application/x-httpd-fastphp .php
   Action application/x-httpd-fastphp /cgi/php5-fcgi.cgi
 </Directory>


Skript wrapperiks

varasemalt virtualhostis sidusime igas .php laiendi kindla cgi skriptiga, mida suexeciga käivitame viimaks ehitame skripti enda, mis käivitatuna suexeci abil kasutaja õigustes stardib php enda ja sellekaudu ka veebi.


#!/bin/sh
#PHPRC="/usr/local/etc/php.ini"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
exec /usr/local/bin/php-cgi

Kopeerime selle faili kasutajate katse ja katse 3 kaustadesse (kataloogidesse):

/usr/local/www/data/katse/cgi-bin/php5-fcgi/usr/local/www/data/katse3/cgi-bin/php5-fcgi

Muudame mõlema faili kasutajaõigusi chown käsuga:

chown katse:katse /usr/local/www/data/katse/cgi-bin/php5-fcgi

chown katse3:katse3 /usr/local/www/data/katse3/cgi-bin/php5-fcgi

testimine kasutamine

Testimiseks saab teha skripti

< ?php
print "hello world< p >\n";
system("id");
php? >


www.nimi.ee skripti vaadates

hello world

uid=1004(katse) gid=1004(katse) groups=1004(katse) 

test.nimi.ee

hello world

uid=1009(katse3) gid=1009(katse3) groups=1009(katse3) 


EENet 2006