Newsgroup: it.comp.os.linux.sys
Titolo: [semiOT]riavviare un demone via web

Saluti a tutti voi.  
 
   Sto cercando delle info. su come dare i permessi per consentire ad un  
determinata pagina web (nello specifico php) di riavviare un demon ad  
esempio squid o apache. Io uso debian woody e fino ad ora ho ottenuto solo
 
"permission denied". 
 
Premesso che si tratta di un server di sviluppo in una lan e che quindi 
non ho problemi di sicurezza. 
Ho proceduto come segue: 
ho fatto un file test.sh con dentro la riga /etc/init.d/squid restart e 
gli ho dato il permessi di esecuziona da parte di apache (www-data). Dalla 
riga di comando test.sh funziona! Anche la pag. che esegue test.sh 
funziona. 
   Grazie a tutti per l'aiuto 
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

basta che apache giri come root


Far girare come root *tutto* apache? Meglio usare un cgi setuid (ammesso che
funzioni) oppure che comunichi (il soggetto e' sempre il cgi)  con un demone
in ascolto che ricevendo la richiesta si occupi di effettuare le operazioni
necessarie al riavvio.
Alessandro.

Quale sarebbe il vantaggio (visto che non ci sono problemi sulla sicurezza)?

Far girare come root *tutto* apache?
Ah, non avevo letto che il richiedente dice esplicitamnte di non preoccuparsi
della sicurezza... comunque spero che i suggerimenti possano comunque essere 
utili.
Alessandro.


Hem, avevo perso questo dettaglio :-)
Comunque la situazione potrebbe sempre cambiare...
Alessandro.

 sicurezza)?
Principalmente che se per caso tirano il server fuori dalla LAN non devono
ricordarsi di aver fatto girare *tutto* apache con un utente privilegiato...
Ciaotutti,
*

 
devi lanciare un comando da php...  con sudo avergli dato il permesso...

 esempio squid o apache.
La soluzione piu' sicura e` di avere il server Web che tocca un file
(preferibilmente su /tmp) e scrivere un cron job che periodicamente
va a vedere se il file esiste... Altrimenti devi giocare con script
SUID (o sudo) e la cosa non e` tanto bella...
Ciao,
-- 
       Roberto Divia`             Love at first sight is one of the greatest
       =============             labour-saving devices the world has ever seen.
Mailbox: C02110                 CERN-European Organization for Nuclear Research
E-mail: 
Robert...@cern.ch
           CH-1211 GENEVE 23, Switzerland

Grazie a tutti per le risposte, 
  Sono completamente a digiuno su SUID (e su infinite altre cose di Linux) 
 
Potreste per favore indicarmi un manuale che mi chiarisca le idee. 
 
  In questo momento mi e' ventuta in mente una soluzione: 
 
Far divetare proprietario di un utente che non sia root sia apache che il 
demon che voglio riavviare, in modo da circoscrivere eventuali danni 
doviti alla poca sicurezza. Che ne pensate. 
 
Grazie Agolf 


 Quale sarebbe il vantaggio (visto che non ci sono problemi sulla sicurezza)?
Tutti - ripeto tutti - i comandi eseguibili dalla rete possono creare problemi
di sicurezza. Provare per credere.


 di sicurezza. Provare per credere.
Forse ti sfugge che la persona ha negato ci siano problemi di sicurezza.
Tutte le persone che conoscono un minimo di sicurezza informatica sanno 
dell"Evil from the inside", peccato che sia completamente OT rispetto a 
questa discussione... e allora perchè sprecare chiacchere inutilmente ?
Bo...

 doviti alla poca sicurezza. Che ne pensate. 
Penso che sarebbe meglio concentrarsi sul cosa vuoi ottenere: se 
desideri fare esperienza ed imparare nuove cose quello che hai proposto 
può avere senso ma se ti serve, per motivi produttivi, una cosa 
stabile/sicura/aggiornata usa un sw come webmin o altro (dipende 
esattamente cosa devi farci) - questo per evitare di reinventare la 
ruota ogni volta.
Saluti

 Saluti 
 
  Grazie dei consigli 


 sicurezza.
_Forse_ ti sfugge che "sicurezza" non significa *solo* l'eventuale
script-kiddie che ti "entra" da internet.
Cmq: la risposta _ufficiale_ e`
- si faccia un wrapper, attraverso C, C++, perlsuid o altro che possa
  farlo, che poi invoca con una system. C'era un equivalente anche in
  php ma ora non ho sottomano l'url.
Detto questo, e` gia` brutto che un linguaggio di alto livello, esegua
delle system, che lo faccia con i privilegi di root, e` in _genere_ una
pessima idea, non perche` "ci sono gli akker", ma perche` e` _troppo_
facile fare DCI [*]. Di solito, il "buon informatico" si ferma, e
riflette se la sua architettura non abbia qualche errore di design.
[*]
Danni
Consistenti
Irreparabili
:)
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
Is it PC compatible?

 riflette se la sua architettura non abbia qualche errore di design.
Invece il "vero informatico" che deve lavorare, talvolta sbadilando 
merda non propria, tende, specialmente in ambienti di sviluppo/test, a 
trovare una soluzione rapida al problema accettando compromessi con la 
sicurezza, pericolosità, pulizia dell'implementazione.

 nuovo ip.
In pratica vuoi che vari demoni prendano da questo file un parametro per 
la configurazione ?

 Invece il "vero informatico" <>
Questo lo considero la parte "che volevi essere polemico", e quindi la
ignoro.
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
If you lie to the compiler, the compiler will get its revenge.

 questa discussione... e allora perchè sprecare chiacchere inutilmente ?
Perche` *qui* e *adesso* non ci sono problemi di sicurezza. Domani ce ne
potrebbero essere, sulla stessa macchina o su una seconda macchina. O da una
terza. Mettiamo che - nel caso in discussione - qualcuno attacchi una nuova
macchina alla rete. Qualcuno di fidato, un amico o un parente. Questa macchina
e` - a insaputa di tutti - infettata. Il primo sistema e` vulnerabile e
viene attaccato con successo. Ti lascio immaginare il resto. Il problema di
Internet e` che - per default - e` una rete aperta. Senza un buon firewall
(hardware o software) chiunque vede chiunque. E` cosi` per design.
Se esistono due soluzioni allo stesso problema - una che "apre" il sistema
e una che non lo apre - io vado sempre per la seconda. E vorrei che
la maggioranza di chi scrive in questo newsgroup ne sia al corrente e ne
prenda atto, magari per farne tesoro nelle sue applicazioni. Abitudine,
modus operandi, azioni automatiche: chiamale come vuoi. E` da loro
che *io* riconosco quello che *io* considero un buon sistemista, nel lavoro
come altrove. Se poi tu non sei d'accordo, mi sta bene, amici come prima. Ma
questo non gioca (nella mia opinione personale) a tuo favore.
Ciao,


 ignoro.
Era una circostanza tipica nella quale si trovano, prima o poi, tutti - 
è una realtà.

 kill -s SIGKILL $SSHAPID
volevo dire:
kill -s SIGKILL $SquidPID

 - è una realtà.
Affatto: significa solo che l'ordine di grandezza dei problemi che
evidentemente ti trovi a risolvere, sono sufficentemente piccoli, per
cui le soluzioni quick&dirty (apache as root, per esempio), non ti
esplodono in faccia.
Ma come sali di complessita`, ti accorgi presto che non funziona, e i
tre secondi guadagnati, costano spesso molto di piu`.
Accidentalmente, questa e` anche la differenza tra chi queste cose le
improvvisa, e chi le fa per mestiere, da anni. E qui non mi riferisco
affatto a te - persona che non conosco professionalmente - ma in
generale a chi pensa che "per fare l'informatica, non ci voglia un
informatico".
Ciao.
ps:
perdire, questo funziona, e anche questa e` una porcheria, ma un po`
meno che far girare _tutto_ un server come root, se non e` necessario:
mizio@hal:~$ cat > 
squidwrap.pl
#!/usr/bin/suidperl -w
$ENV{PATH} = "/bin:/usr/bin";
system("/etc/init.d/squid", "restart");
quindi
mizio@hal:~$ su -
Password: 
hal:~# chown root /home/mizio/
squidwrap.pl
 
hal:~# chmod 4755 /home/mizio/
squidwrap.pl
 
hal:~# ll /home/mizio/
squidwrap.pl
 
-rwsr-xr-x    1 root     mizio          96 Nov 27 15:39
/home/mizio/
squidwrap.pl
hal:~# logout
_Questo_ funziona. Meglio ancora, usare sudo che e` fatto apposta.
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'

 
Conosco un pollo (ma era giovane e inesperto) che non solo aveva apache 
come root, non solo (tanto la macchina per l'epoca era grossa, un P200 mmx 
con 128 mega di ram) usava X (ovviamente da root) in una macchina con ip 
pubblico e costosissima CDN da 64 kbit collegata sempre, ma aveva lasciato 
  lo script phf (o come si chiamava) bello che attivo...
Dopo aver fatto le 3 di notte a rimettere tutto a posto ha capito 2 o 3 
cosette..
Bei tempi, kernel 2.0 (".. stellar performance with smp machine.."), 
apache 1.1....
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
	(Seen on TV!!!)
	"Risparmiamo 5 centesimi a transazione!"


comunque sia con qualsiasi soluzione eseguita da web al massimo
(ovviamente) puoi stoppare apache, non potrai mai riavviarlo, per farlo
ti occorrerebbe un secondo web server per riavviare il primo (soluzione
oscena) ;-)
 Gio'
-- 
     ((__))
      (00)          
http://web.tiscali.it/bigio
-nn--(o__o)--nn-

 (soluzione oscena) ;-)
Puoi lanciare un SIGHUP, che di solito e' sufficiente, oppure fai partire un
eseguibile che vada di daemon() (detachandosi dal processo padre che quindi
puo' morire senza tirarselo dietro) e quindi di system()...
Ciaotutti,
*

  
...
pur conoscendo il livello infimo che i cl sono in grado di raggiungere,
premere un pulsante in una pagina web, è alla portata di tutti...
sei proprio sicuro che non ti basti riavviare apache da webmin? 
secondo me riesci a fare tutto con webmin: una
casella di testo, un bottone e uno script (che devi fare tu, ovviamente)
per modificare la cfg di apache e riavviarlo. 
ti crei un 'custom command', imposti la richiesta dei parametri che vuoi 
e poi con un click sul pulsante, perfino un ul 'dovrebbe' riuscire a 
usarlo (trattandosi di ul, il condizionale è d'obbligo ;-P). 
forse sono un pò di parte, dato che trovo webmin molto comodo, ma imho t 
stai complicando la vita per niente.
la ruota esiste già!
:-)
-- 
+-------
| Paolo opg
|
| janickg ( at ) hotmail ( dot ) com
| (fake address in reply-to field!)
+-------