Apache
Bhè spero che abbiate già installato questo webserver.. possibilmente con
supporto ssl per maggiore sicurezza… Non sto a spiegarvi come si instal
la apache, ci sono tanti documenti in rete, vi dico cosa fare per i cgi…
Assicuratevi che ci siano queste direttive:
++
Option ExecCgi
Script alias /cgibin/ /percorso/alla/vostra/home/cgibin
AddHandler cgiscript .cgi
++
Se da qualche parte ci sono queste direttive siete a posto, altrimenti aggiungete
le.. Ovviamente apache deve avere il supporto per suexec, spesso lo ha di
default.. per capirlo avviate apache e nel file access_log dovreste trovare
una stringa tipo: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
Se la trovate il suexec è attivo e funzionante, altrimenti vi rimando alla
seguente pagina: http://httpd.apache.org/docs/suexec.html
Vi spiega come installarlo :>
++
Suexec
Ora abbiamo apache che funziona correttamente con suexec ? No ? lo so..
Ci sono degli accorgimenti da fare, lanciate questi comandi
++
democrito:~# locate suexec
/usr/lib/apache/suexec
/usr/share/doc/apachecommon/suexec.c.gz
/usr/share/doc/apachecommon/suexec.h.gz
/usr/share/man/man8/suexec.8.gz
/var/log/apache/suexec.log
democrito:~# /usr/lib/apache/suexec V
D DOC_ROOT=”/var/www”
D GID_MID=100
D HTTPD_USER=”wwwdata”
D LOG_EXEC=”/var/log/apache/suexec.log”
D SAFE_PATH=”/usr/local/bin:/usr/bin:/bin”
D UID_MID=100
D USERDIR_SUFFIX=”public_html”
democrito:~#
++
In italiano.. la document root sulla quale verranno eseguiti i cgi con sue
xec è: /var/www (in questo caso).. il gid è 100, l’uid pure e l’user che
può invocare il suexec è wwwdata (utente apache sotto debian, poteva anche
essere nobody o www o oGjepojg).
Quindi lanciamo questi comandi:
++
democrito:~# groupadd g 100 nomegruppo
democrito:~# adduser home /var/www uid 100 gid 100 nomeutente
democrito:~#
++
Interpretazione: aggiungo un utente con home /var/www (corrispondente alla
document root di suexec, uid 100 (uid di suexec), gid idem, nome utente
quello che ci pare =) Bene a questo punto ci manca un piccolo passo per
completare metà dell’opera: chownare il file cgi con nomeutente:gruppo
Niente di più facile: andate nella home dell’utente e fate:
++
democrito:~# mkdir cgibin
democrito:~# chown R utente:gruppo cgibin
democrito:~#
++
Ok, adesso la directory cgibin appartiene a utente:gruppo… ed ora…
La prova del nove
Copiate il seguente cgi nel file test.cgi e lanciate i comandi sotto indic
ati.
++
#!/usr/bin/perl
print “ContentType: text/plain”;
@id=`id`;
print “@id”;

#FINE#
democrito:~# chown utente:gruppo test.cgi chmod +x test.cgi
++
Aprite il browser: indirizzo.ip.del.server/cgibin/test.cgi
Output ? se risulta una cosa così:
uid=33(wwwdata) gid=33(wwwdata) groups=33(wwwdata) (o simile)
ok non ci siamo… andiamo ad aprire i log di suexec (se non sapete dove
siano lanciate suexec con V e leggete l’output :>
Se invece è uscito l’uid 100 il gid 100 ecc ecc ecc ecc siamo a posto =)
Per quanto riguarda gli errori, se avete seguito questa procedura tutto
funziona, l’ho provato io.. in casi strani consultate google alla pagina:
suexec errori =)
++
Sudo
Ora ci siamo quasi.. anche qui non sto a spiegare l’installazione di sudo,
mi sembra inutile visto che ci sono tutti i pacchetti faccio tutto io in
giro… io spiego il file di configurazione adatto a questa situazione 😀
++
democrito:~# echo “nomeutente ALL=ALL,NOPASSWD: ALL” >> /etc/sudoers
democrito:~# su nomeutente
democrito:~$ sudo id
uid=0(root) gid=0(root) groups=0(root)
++
ok ci siamo, se l’output è questo vuol dire che sudo funziona correttamente
e che quindi siamo pronti a modificare lo script perl per testare il
funzionamento via web: eseguite codesti comandi
++
#!/usr/bin/perl
print “ContentType: text/plain”;
@id=`sudo id`;
print “@id”;

#FINE#
democrito:~# chown utente:gruppo test.cgi chmod +x test.cgi
++
Aprite il browser ed eseguite lo script.. se l’output è:
uid=0(root) gid=0(root) groups=0(root)
siamo a posto… Per oggi abbiamo finito 🙂
Se avete seguito queste procedure non può non funzionare =)
++
Conclusioni
Questo è un metodo molto semplice per non dover complicarsi il doppio la
vita per non far andare suexec a root eccetera, a mio parere meno sicuro..