Sis srl

Ciarpame {.com}

Useful stuffs for the masses. Useless things for few.

October 27th, 2008

cambiare facilmente il docroot di suexec su Debian (sarge/lenny/etch).

by Giovanni Savastano

Una delle cose più fastidiose di apache è che, se compilato senza attenzione, si porta dietro una serie di configurazioni non modificabili tramite semplici file di configurazione.
Alcune di queste sono sicuramente i parametri di suexec.
Suexec è una funzionalità presente in apache 1.2 che permette di eseguire CGI e applicazioni SSI con i privilegi diversi da quelli dell’utente apache di sistema. In questo modo ogni utente può eseguire scripts complessi senza poter uscire dal proprio spazio web.

Purtoppo a volte è necessario modificare i path di default.
Vediamo come

Innanzitutto loggatevi sulla vostra macchina con privilegi di root

1
# su -

controlliamo i parametri del nostro suexec:

1
2
3
4
5
6
7
8
# /usr/lib/apache2/suexec -V
     -D AP_DOC_ROOT="/var/www"
     -D AP_GID_MIN=100
     -D AP_HTTPD_USER="www-data"
     -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
     -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
     -D AP_UID_MIN=100
     -D AP_USERDIR_SUFFIX="public_html"

come potete vedere dal risultato, i parametri cablati al momento della compilazione sono molti.
spostiamoci in /usr/src e scarichiamo i sorgenti necessari al nostro scopo

1
2
3
4
# cd /usr/src
# apt-get update
# apt-get build-dep apache2
# apt-get source apache2

ok, adesso spostiamoci nella directory con i sorgenti e configuriamo apache con i parametri che ci interessano:

1
2
# cd apache2-2.2.3
# nano debian/rules

all’interno del file rules troverete un sacco di parametri. quelli ci interessano in questo momento sono quelli sotto la voce AP2_COMMON_CONFARGS.
quindi modifichiamo quanto ci serve andando a cambiare quanto presente alla riga

1
      --with-suexec-docroot=/home/hosting \

e salviamo.
ora, semplicemente, dovremmo ricompilare il file. prima di farlo però, è necessario modificare la versione di apache in modo tale che il nostro cambiamento non venga sovrascritto ad ogni upgrade.
quindi

1
# dch -i

e ci troviamo all’interno del changelog di apache.
UN CONSIGLIO: se non volete dover reinstallare tutti i pacchetti di apache, eliminate la versione che dch vi aggiunge in automatico e andate a lavorare sull’ultima. aggiungete un bel * e inserite il vostro commento, tipo: “fixed suexec docroot to: /home” e salvate.
in questo modo la versione rimarrà inalterata e apache installerà solo la “patch” da voi applicata

a questo punto dobbiamo solo compilare e pacchettizzare

1
# dpkg-buildpackage

aspettate la fine delle operazioni di compilazione, tornate in /usr/src e installate i pacchetti modificati (nel nostro caso apache2.2-common e apache2.2-utils)

1
2
3
# cd /usr/src //o se volete cd ../
# dpkg -i apache2.2-common_2.2.3-4+etch6_amd64.deb 
# dpkg -i apache2-utils_2.2.3-4+etch6_amd64.deb

fatto questo restartate apache, verificate che tutto sia andato a posto ed eventualmente controllate i conflitti con apt

1
2
3
4
5
6
7
8
9
10
# /etc/init.d/apache2 restart
# /usr/lib/apache2/suexec -V
     -D AP_DOC_ROOT="/home"
     -D AP_GID_MIN=100
     -D AP_HTTPD_USER="www-data"
     -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
     -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
     -D AP_UID_MIN=100
     -D AP_USERDIR_SUFFIX="public_html" 
# apt-get install -f

alla prossima!

Tags: · , , ,
Categories: Linux&Co. · Tricks

0 Comments

  • There are no comments yet...Kick things off by filling out the form below.

Leave a Comment