PDA

Visualizza la versione completa : Reload di apache attraverso Perl o CGI


StarServ
05-06-2008, 21:44
Ciao a tutti ,
premetto che lavoro principalmente con php quindi non so nulla di cgi o perl,

il problema questo , ho uno script : attiva.php?codice=marco

che attiva l'utente marco, crea la cartella marco e crea un virtualhost su un file ad apache,

es :marco.miosito.com

Adesso come gli dico ad apache che sono root di sistema e che deve fare un reload ?

Il server ha os debian 4 etch apache2 e php5 il sito non lo aministro come root ma come user quindi se aggiungessi uno script per eseguire questo reload , dovrei anche farlo autentificare come root.

Grazie anticipatamente :ciauz:

shishii
07-06-2008, 19:09
ovviamente una operazione che in condizioni normali non possibile poich altrimenti salterebbe qualunque condizione di sicurezza.

Qualunque soluzione parte dal presupposto che tu abbia le credenziali di root, oppure che l'amministratore sia disponibile ad assegnare ad un tuo script tali privilegi.

Sussiste almeno uno dei due presupposti?

StarServ
07-06-2008, 21:02
Si sono root del server quindi posso agire a mio piacere , ovviamente dicevo che il sito messo su come utente normale ma eventualmente posso spostarlo e gestirlo come root ,

anche se preferirei se possibile autentificare quel utente come root solo per il reload.

Grazie per ora :ciauz:

shishii
08-06-2008, 18:32
allora puoi fare cos.

crea uno script che esegua solo il reload senza parametri passati dal web, ma decisi tramite dati presi da un file statico.

rendi root proprietario:

> chown root:root /path/script

attribuisci il bit setuid:

> chmod s+o /path/script

in modo che lo stesso venga eseguito con i permessi di root anche se azionato da apache.

Proteggi il tutto in qualche modo, ma senza passare la password di root da web.

StarServ
08-06-2008, 18:57
Grazie della risposta , ma non capisco alcune cose :

Cosa ci devo mettere nello script per fare il reload di apache ?

Se do chown sul file con root:root apache non lo apre il file ,

e nemmeno con le mode che mi hai scritto lo apre ,

per scrupolo ho messo 777 e +x ma anche cosi per via del chown non lo apre.

:dh:

:ciauz:

StarServ
08-06-2008, 19:14
Correzione , allora ho scritto 2 righe in questo modo :

#!/bin/bash
/etc/init.d/apache2 reload

lo script lanciato da shell e come root funziona magari richiamato da apache e con i permessi giusti puo' funzionare ?

StarServ
16-06-2008, 13:58
Ho risolto in questo modo nel caso possa servire a qualcun altro :

apt-get install sudo

visudo

e ho inserito questa riga

nomeutente ALL=NOPASSWD: /etc/init.d/apache2 reload

poi

/etc/init.d/sudo restart

Ora il comando eseguibile da quel utente e senza password

Purtroppo deficita di sicurezza ma almeno una soluzione provvisoria per poter continuare a sviluppare il programma

:ciauz:

Loading