Newsgroup: it.comp.www.php
Titolo: Eseguire programmi come root da php

Salve a tutti,
ho necessità di eseguire un comando da PHP, il riavvio di squid. Poichè 
questa è un'operazione riservata a root, il comando non va ovviamente a 
buon fine.
Qualcuno ha mai affrontato l'argomento?
Magari risolvere con uno script cgi? Purtroppo in questo caso non so 
nemmeno da dove iniziare.
Grazie in anticipo e saluti,
Emanuele

Emanuele Giglio ha scritto:

Beh... se è solo quello il comando, potresti utilizzare `sudo`,
specificando per quale eseguibile dare l'accesso root.
man sudo
man sudoers
/etc/sudoers
David
-- 
Linux Registered User #334216
Get FireFox! >> 
http://www.spreadfirefox.com/?q=affiliates&id=48183&t=1
Staff >> 
http://www.debianizzati.org
 <<

 
Sdebianizzati e suderai di meno!
man suexec
suexec -V
Come minimo dovrebbe ricompilare suexec ed aprire un varco nella sicurezza
del sistema il tutto per riavviare squid.
Html form (bottone raivvia) check.php (richiede una password e la verifica)
chiama 
client.pl
 che a sua volta chiama 
server.pl
 (che gira con i perms di
root e sta in ascolto su una porta XXX tcp ed accetta conn solo da
127.0.0.) 
server.pl
 verifica la password passata da 
client.pl
 (diversa da
quella passata dall'utente) se corrisponde invia l'unico comando
"/etc/init.d/squid start"
per maggior sicurezza perlcc 
client.pl
 e lo compili
Redhattizzati!

 [cut]
Oppure diventa indipendente dalla distribuzione con:
su -c comando
ADM

ADM wrote:

http://httpd.apache.org/docs/2.2/suexec.html
Se vuoi illuminarci con bel script... e spiegarci come fai a non farlo
processare da apache che a sua volta lo passa a suexec che imposta i perms
e lo esegue, siamo tutti orecchi..
Tra l'altro:
 Se l’UTENTE ha una password, su la chiederà a meno che non sia lanciato 
dall’utente  con user ID reale pari a 0 (il superuser).
quindi su -c comando funziona solo se hai la password di root
(interattivamente) e quindi sarei curioso di capire quale genio lancerebbe
qualcosa del genere da uno script in .php 
Ora se vogliamo continuare a sparare cazzate a vanvera.. altrimenti script
alla mano e si dimostra di essere dei sysadmin.
Apache ce l'avete sotto mano, quindi testate le vostre "teorie" prima di
propinarle.
Buon lavoro

 Buon lavoro
Grazie.
Piccolo appunto: il fatto di mettere la password in chiaro in un file
di testo è ovviamente una assurdità in tema di sicurezza. Il creatore
di questo post ha chiesto un consiglio. Sono state fornite due
possibilità e io ne ho solo mostrato una terza. Sta a chi lo utilizza
scegliere il più aderente alle proprie necessità.
ADM

 <? passthru("su utente -c ls < fileContenentePasswordInChiaro"); ?>
Bell'esempio, complimenti vivissimi sei appena stato promosso per la pulizia
dei cessi nella sede di Red Hat!
<?
$comando=system('ls');
$passfile="./passfile";
passthru("su root -c $comando < ./passfile");
?>
questo funziona ovvviamente!
anche:
$comando=system('cat /etc/passwd');
funziona chissà come mai..
-rw-r--r--    1 root   root      2589 14 giu 00:05 passwd
$comando=system('cat /etc/shadow');
NON FUNZIONA chissà come mai..
-r--------    1 root   root      1560 14 giu 00:05 shadow
$comando=system('shutdown -h now');
NON FUNZIONA indovina..
ne tutti gli altri che richiedono i perms di root ivi inclusi il restart dei
vari demoni!
Prova ancora Sam!
Quindi 'su' non può essere utilizzato da apache per acquisire UID=0.
Quando vorrai ripostare un esempio almeno assicurati che il comando in
questione richieda i perms di root così eviti di fare la figura del pirla!
Buon lavoro

Grazie mille a tutti, io in realtà avevo chiesto un consiglio ma, alla 
fine, ne sono arrivati... troppi, e non ho capito niente! :-)
Noooo, scherzo, non volevo innescare una serie di post-polemica.
Grazie a tutti,
E.