Newsgroup: it.comp.www.php
Titolo: eseguire comandi linux

Come faccio a far eseguire piu\' comandi linux da un programma fatto con php, come se stessi eseguendoli dalla shell di linux. Vorrei avere i diritti di scrittura e lettura.
Vorrei inoltre usare la funzione system o exec proprie del php.
Ciao!
Posted by 
http://www.phpitalia.com



 Vorrei inoltre usare la funzione system o exec proprie del php.
Leggiti il manuale: ci sono degli esempi
(*) Se l'amministratore sei tu: mi sembri alle prime armi. Prima
di mettere a rischio la sicurezza del tuo sistema dando permessi
pericolosi all'utente nobody, *STUDIA*

Ti ringrazio per la risposta ......
...c'e'  un sistema sicuro per far cio che voglio io?
...suEXEC puo' essermi d'aiuto?

 ...suEXEC puo' essermi d'aiuto?
Se si tratta di andare a modificare qualche file non critico,
probabilmente la cosa più comoda da fare è di cambiare le
permission per quei file.
Se invece devi andare a toccare - che so? - /etc/passwd o
/etc/shadow, le cose cambiano parecchio.
Che devi fare, esattamente ?

Sto usando il vpopmail per gestire domini virtuali e vorrei chiamare i file
del vpopmail tramite un codice php con la funzione system().
/etc/passwd   e /etc/shadow  non mi interessano.
Ti ringrazio ancora. :)

 funzione system().
Il problema è questo: apache "gira" con gli stessi diritti
dell'utente "nobody", ossia col minimo dei diritti necessari.
Di conseguenza gli script php possono fare solo quello che
"nobody" può fare.
Se per gli eseguibili di "vpopmail" che ti servono il bit di
esecuzione per "others" è settato, allora non ci sarebbero
problemi ad eseguirli, se non fosse che sicuramente essi
dovrebbero modificare qualche file, e le permission di questi
altrettanto sicuramente non permetterebbero ad uno tipo
poco raccomandabile come "nobody" di modificarli.
Ci sono diverse soluzioni al problema. La più semplice [*] è
impostare le ownership di tali file in modo che "nobody"
possa modificarli.
Sei sicuro che l'estensione "vpopmail" di PHP non faccia
al caso tuo? Sulla v. 4.0.5 c'è, sulle precedenti non so.
Si tratta di scaricarsi i sorgenti di PHP, di installare
il pacchetto "devel" di vpopmail [**], e di ricompilare PHP
col supporto vpopmail. Il mio "configure" (uso redhat e compilo
come moduli le varie estensioni [***] )  col supporto che
serve a te è qualcosa del tipo:
./configure \
    --with-apxs=/usr/sbin/apxs \
    --with-config-file-path=/etc/httpd/conf \
    --with-vpopmail=shared \
    --with-xml=shared \
    --with-sablot=shared \
    --with-gd=shared \
    --with-imap=shared \
    --with-zlib=shared \
    --enable-dba=shared \
    --with-gdbm \
    --with-ndbm \
    --with-db2 \
    --disable-debug \
    --enable-versioning \
    --enable-memory-limit \
    --enable-trans-sid \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-gd-imgstrttf \
    --enable-track-vars
[*] Con questo sistema, però, *QUALUNQUE* script PHP sul tuo server,
scritto da *CHIUNQUE* potrà accedere a tali file.
[**] Ho assunto che la tua distribuzione linux sia basata su RPM,
nel qual caso se il pacchetto si chiama pippo-1.2.3-4.rpm, il
corrispondente "devel" si chiamerà: pippo-devel-1.2.3-4.rpm
[***] non sempre è possibile.

Beh se esiste un supporto per vpopmail penso(spero) che  i miei problemi
siano finiti, comunque potresti dirmi dove trovare della documentazione a
proposito di questo supporto.
Vorrei sapere che funzioni avrei in  piu'.
Grazie ancora ........  :)

Mi sono scaricato il PHP 4.0.5  a questo punto devo solo ricompilarlo come
mi hai detto tu no?  serve altro ?

Non so come ringraziarti , spero funzioni tutto...al limite ti stressero
ancora  un po'  :)
thank's   :)

 serve altro ?
Immagino che serva il pacchetto "devel" del vpopmail, ma non so dirti
dove tu possa trovarlo.
Inoltre il supporto "vpopmail" è classificato come "experimental" ma,
come al solito, migliorerà man mano che PHP "cresce". Purtroppo nella
documentazione on-line mancano ancora riferimenti specifici, però se
guardi in:
    /dove/hai/scompattato/php-4.0.5/ext/vpopmail
troi almeno il README. Immagino che tu possa partire da qui.
Divertiti

 ha scritto nel messaggio
news:9d5jlk$ba1$1...@news.flashnet.it...


Nel ./configure che mi hai dato hai scritto :
--with-apx=/usr/sbin/apx\
e
--with-config-file-path=/etc/httpd/conf\
.... /usr/sbin/apx\   e  etc/httpd/conf\ non sono directory che ho nella
macchina dov'e'  installato linux.
Che directory sono?
Devo crearle?
Che file deve trovare l'installazione dentro queste directory?
Grazie anticipatamente.



 --with-config-file-path=/etc/httpd/conf\
Nel mio caso è la directory che contiene i file di configurazione di
apache.
Nello specifico indica in quale directory php andrà a cercare i suoi
file di
configurazione.
Specifica la tua.

Ho installato il php 4.0.5 senza incontrare problemi, ho dovuto pero'
togliere/modificare/aggiungere alcune parti del ./configure, adesso prto'
non so come cavolo si possa usare l'estensione vpopmail del php, per altro
la documentazione a riguardo e' scarsa.
Come tho gia detto vorrei poter chiamare da un programma php con la funzione
system()  gli eseguibili di vpopmail.
Ciao  e grazie

Vorrei avere i diritti di scrittura e lettura.
	system("sudo comando1");
Leonardo
-- 
".signature": bad command or file name

 eseguibili di vpopmail.
Allora:
1) Imposti le permission in modo che "nobody" possa
in qualche modo accedere ai file necessari (il problema
non è eseguire i programmi ma farli leggere e/o scrivere
dove devono, anche quando non sono invocati da "root")
2) Come ti ha suggerito Leonardo:
    <?
    [...]
    system("sudo nomecomando1");
    system("sudo nomecomando2");
    [...]
    ?>
Pe informazioni su "sudo":
    man sudo
Non è detto che sia installato di default. Se non lo fosse
lo troverai nel CD di installazione della tua distribuzione.

 documentazione a riguardo e' scarsa.
Fossi in te insisterei. Prova a contattare l'autore o
a chiedere anche su:
    news://
news.php.net/php.general
O magari prova a cunsultare l'archivio delle mailing list:
 
http://www.php.net/support.php

Non serve ho gia risolto il problema se hai ricevuto la mia mail lo sai gia,
cmq e' stato necessario avviare  un altro server apache con user e gruppo
appropiati e su un'altra porta.