Comando shell da PHP [Risoltissimo]

Installazione, configurazione e uso di Ubuntu come server: web, ftp, mail, news, proxy, dns, ecc.

Comando shell da PHP [Risoltissimo]

Messaggioda some0ne » martedì 6 ottobre 2009, 17:37

Ciao,vorrei sapere come lanciare un comando,precisamente /etc/init.d/squid3 restart da una pagina php con exec() o roba simile...ovviamente quel comando ha bisogno di privilegi di root,qualche idea ?
Ultima modifica di some0ne il mercoledì 7 ottobre 2009, 11:11, modificato 1 volta in totale.
some0ne Non specificato
Prode Principiante
 
Messaggi: 22
Iscrizione: settembre 2009

Re: Comando shell da PHP

Messaggioda Valix » martedì 6 ottobre 2009, 18:08

ti basta creare un file con dentro la tua password
per esempio creiamo un file chiamato pass all'interno della tua home

ora nel tuo file php inserisci

Codice: Seleziona tutto
<?php
shell_exec('sudo -u root -S /etc/init.d/squid3 restart < /home/$User/pass');
?>
>> Quando avete risolto un problema, mettete [Risolto] nel titolo del primo post <<

L'immaginazione è più importante della conoscenza. La conoscenza è limitata, l'immaginazione abbraccia il mondo. Albert Einstein
Avatar utente
Valix Non specificato
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 272
Iscrizione: novembre 2006

Re: Comando shell da PHP

Messaggioda dirty_paul » martedì 6 ottobre 2009, 22:59

...scusate mi intrometto anche io nella discussione.

Per esegiore comando o script con privilegi di root esempio:

Codice: Seleziona tutto
sudo lshw -html


voglio eseguirlo su una pagina php non da root:

Codice: Seleziona tutto
<?php
   echo shell_exec('lshw -html');
?>



tutto ok,
se voglio farlo da root?
Avatar utente
dirty_paul Non specificato
Prode Principiante
 
Messaggi: 231
Iscrizione: gennaio 2009

Re: Comando shell da PHP

Messaggioda ReMichael » martedì 6 ottobre 2009, 23:14

dirty_paul ha scritto:...scusate mi intrometto anche io nella discussione.

Per esegiore comando o script con privilegi di root esempio:

Codice: Seleziona tutto
sudo lshw -html


voglio eseguirlo su una pagina php non da root:

Codice: Seleziona tutto
<?php
   echo shell_exec('lshw -html');
?>



tutto ok,
se voglio farlo da root?


lo ha scritto Valix sopra..
Codice: Seleziona tutto
echo shell_exec('sudo -S lshw -html < file_che_contiene_la_password');
Avatar utente
ReMichael Non specificato
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 4042
Iscrizione: novembre 2007

Re: Comando shell da PHP

Messaggioda dirty_paul » martedì 6 ottobre 2009, 23:14

...esatto, ma non mi funziona
Avatar utente
dirty_paul Non specificato
Prode Principiante
 
Messaggi: 231
Iscrizione: gennaio 2009

Re: Comando shell da PHP

Messaggioda ReMichael » martedì 6 ottobre 2009, 23:18

dirty_paul ha scritto:...esatto, ma non mi funziona


l'ho provato adesso e a me funziona.. mi stampa tutto l'output  :-\
Avatar utente
ReMichael Non specificato
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 4042
Iscrizione: novembre 2007

Re: Comando shell da PHP

Messaggioda dirty_paul » martedì 6 ottobre 2009, 23:25

a me continua a non funzionare

...non so.

forse dipende dai privilegi utente www-data?
Avatar utente
dirty_paul Non specificato
Prode Principiante
 
Messaggi: 231
Iscrizione: gennaio 2009

Re: Comando shell da PHP

Messaggioda ReMichael » martedì 6 ottobre 2009, 23:27

dirty_paul ha scritto:a me continua a non funzionare

...non so.

forse dipende dai privilegi utente www-data?


io l'ho eseguito direttamente con il comando php in effetti.. comunque sì, assicurati che il file sia leggibile da www-data, dovrebbe essere quello il problema.

EDIT: beh, ma adesso che ci penso.. www-data non è tra i sudoers.. lo devi aggiungere
Ultima modifica di ReMichael il martedì 6 ottobre 2009, 23:29, modificato 1 volta in totale.
Avatar utente
ReMichael Non specificato
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 4042
Iscrizione: novembre 2007

Re: Comando shell da PHP

Messaggioda dirty_paul » martedì 6 ottobre 2009, 23:39

e infatti come immaginavo.
era l'ultima prova che volevo fare ed infatti funziona.
comunque grazie

una domanda:
mettendo l'utente www-data tra i "sudoers" , cambia qualcosa a livello di sicurezza oppure...
Avatar utente
dirty_paul Non specificato
Prode Principiante
 
Messaggi: 231
Iscrizione: gennaio 2009

Re: Comando shell da PHP

Messaggioda ReMichael » martedì 6 ottobre 2009, 23:42

dirty_paul ha scritto:e infatti come immaginavo.
era l'ultima prova che volevo fare ed infatti funziona.
comunque grazie

una domanda:
mettendo l'utente www-data tra i "sudoers" , cambia qualcosa a livello di sicurezza oppure...


secondo me sì.. non usano root appunto per la sicurezza, mettendo www-data nei sudoers a mio parere come rischi ci avviciniamo.. poi non so quanto sia sfruttabile la cosa, però non è il massimo  :)
Avatar utente
ReMichael Non specificato
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 4042
Iscrizione: novembre 2007

Re: Comando shell da PHP

Messaggioda some0ne » mercoledì 7 ottobre 2009, 10:05

dirty_paul ha scritto:e infatti come immaginavo.
era l'ultima prova che volevo fare ed infatti funziona.
comunque grazie

una domanda:
mettendo l'utente www-data tra i "sudoers" , cambia qualcosa a livello di sicurezza oppure...


ho provato ad aggiungere www-data ai sudoers con usermod -a -G admin www-data
ma non funge...
qualcuno mi copia incolla il suo /etc/sudoers con www-data dentro?
some0ne Non specificato
Prode Principiante
 
Messaggi: 22
Iscrizione: settembre 2009

Re: Comando shell da PHP

Messaggioda ReMichael » mercoledì 7 ottobre 2009, 10:14

some0ne ha scritto:
dirty_paul ha scritto:e infatti come immaginavo.
era l'ultima prova che volevo fare ed infatti funziona.
comunque grazie

una domanda:
mettendo l'utente www-data tra i "sudoers" , cambia qualcosa a livello di sicurezza oppure...


ho provato ad aggiungere www-data ai sudoers con usermod -a -G admin www-data
ma non funge...
qualcuno mi copia incolla il suo /etc/sudoers con www-data dentro?


aggiungilo al gruppo così:
Codice: Seleziona tutto
sudo adduser www-data admin
Avatar utente
ReMichael Non specificato
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 4042
Iscrizione: novembre 2007

Re: Comando shell da PHP

Messaggioda some0ne » mercoledì 7 ottobre 2009, 10:18

continua a non funzionare :\

some0ne@Userver:~/www$ sudo adduser www-data admin
The user `www-data' is already a member of `admin'.

anche se è gia membro non riesco ad eseguire comandi shell via php...
some0ne Non specificato
Prode Principiante
 
Messaggi: 22
Iscrizione: settembre 2009

Re: Comando shell da PHP

Messaggioda ReMichael » mercoledì 7 ottobre 2009, 10:31

some0ne ha scritto:continua a non funzionare :\

some0ne@Userver:~/www$ sudo adduser www-data admin
The user `www-data' is already a member of `admin'.

anche se è gia membro non riesco ad eseguire comandi shell via php...


prova ad usare sudo da console con l'utente www-data per verificare se funziona o no.. nel caso che così funziona, il problema sta nella pagina php
Avatar utente
ReMichael Non specificato
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 4042
Iscrizione: novembre 2007

Re: Comando shell da PHP

Messaggioda some0ne » mercoledì 7 ottobre 2009, 10:36

prova ad usare sudo da console con l'utente www-data per verificare se funziona o no.. nel caso che così funziona, il problema sta nella pagina php


some0ne@Userver:~$ sudo -u www-data /etc/init.d/squid3 restart
ulimit: 33: error setting limit (Operation not permitted)
* Restarting Squid HTTP Proxy 3.0 squid3                                                                                                                    ulimit: 144: error setting limit (Operation not permitted)
some0ne Non specificato
Prode Principiante
 
Messaggi: 22
Iscrizione: settembre 2009

Re: Comando shell da PHP

Messaggioda ReMichael » mercoledì 7 ottobre 2009, 10:53

some0ne ha scritto:
prova ad usare sudo da console con l'utente www-data per verificare se funziona o no.. nel caso che così funziona, il problema sta nella pagina php


some0ne@Userver:~$ sudo -u www-data /etc/init.d/squid3 restart
ulimit: 33: error setting limit (Operation not permitted)
* Restarting Squid HTTP Proxy 3.0 squid3                                                                                                                    ulimit: 144: error setting limit (Operation not permitted)



non so se è corretto fare così.. prova a fare un su a www-data e poi lanciare il comando con sudo
Avatar utente
ReMichael Non specificato
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 4042
Iscrizione: novembre 2007

Re: Comando shell da PHP

Messaggioda some0ne » mercoledì 7 ottobre 2009, 10:57


non so se è corretto fare così.. prova a fare un su a www-data e poi lanciare il comando con sudo

www-data mi chiede una password ...
some0ne Non specificato
Prode Principiante
 
Messaggi: 22
Iscrizione: settembre 2009

Re: Comando shell da PHP

Messaggioda ReMichael » mercoledì 7 ottobre 2009, 11:01

some0ne ha scritto:

non so se è corretto fare così.. prova a fare un su a www-data e poi lanciare il comando con sudo

www-data mi chiede una password ...


quando lanci sudo da www-data ti chiede la password? o quando cerchi di passare a www-data con su?
Avatar utente
ReMichael Non specificato
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 4042
Iscrizione: novembre 2007

Re: Comando shell da PHP

Messaggioda some0ne » mercoledì 7 ottobre 2009, 11:04

su www-data
Password:

l'ho impostata con sudo passwd www-data

poi ho fatto su www-data

e da www-data ho lanciato
sudo /etc/init.d/squid3 restart e funge

ora pasto il codice php,magari cè qualcosa che non va li..:

some0ne@Userver:~/www$ cat write.php

$add = $_POST[add];
$addok = $add."\n";

$white = "/home/some0ne/www/white.txt";
$fh = fopen($white, 'at')
or die("Impossibile aprire il file");


fwrite($fh,$addok);

fclose($fh);

shell_exec('sudo -u root -S /etc/init.d/squid3 restart  < /home/some0ne/pass');


?>
some0ne Non specificato
Prode Principiante
 
Messaggi: 22
Iscrizione: settembre 2009

Re: Comando shell da PHP

Messaggioda ReMichael » mercoledì 7 ottobre 2009, 11:07

some0ne ha scritto:su www-data
Password:

l'ho impostata con sudo passwd www-data

poi ho fatto su www-data

e da www-data ho lanciato
sudo /etc/init.d/squid3 restart e funge

ora pasto il codice php,magari cè qualcosa che non va li..:

some0ne@Userver:~/www$ cat write.php

$add = $_POST[add];
$addok = $add."\n";

$white = "/home/some0ne/www/white.txt";
$fh = fopen($white, 'at')
or die("Impossibile aprire il file");


fwrite($fh,$addok);

fclose($fh);

shell_exec('sudo -u root -S /etc/init.d/squid3 restart  < /home/some0ne/pass');


?>



mmm.. togli dal comando "-u root" e controlla che il file pass sia leggibile da www-data (e che ovviamente contenga la password di www-data)
Avatar utente
ReMichael Non specificato
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 4042
Iscrizione: novembre 2007

Successiva

Torna a Ubuntu su server

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 1 ospite