Pagina 1 di 2

Comando shell da PHP [Risoltissimo]

Inviato: martedì 6 ottobre 2009, 17:37
da some0ne
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 ?

Re: Comando shell da PHP

Inviato: martedì 6 ottobre 2009, 18:08
da Valix
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');
?>

Re: Comando shell da PHP

Inviato: martedì 6 ottobre 2009, 22:59
da dirty_paul
...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?

Re: Comando shell da PHP

Inviato: martedì 6 ottobre 2009, 23:14
da ReMichael
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');

Re: Comando shell da PHP

Inviato: martedì 6 ottobre 2009, 23:14
da dirty_paul
...esatto, ma non mi funziona

Re: Comando shell da PHP

Inviato: martedì 6 ottobre 2009, 23:18
da ReMichael
dirty_paul ha scritto: ...esatto, ma non mi funziona
l'ho provato adesso e a me funziona.. mi stampa tutto l'output  :-\

Re: Comando shell da PHP

Inviato: martedì 6 ottobre 2009, 23:25
da dirty_paul
a me continua a non funzionare

...non so.

forse dipende dai privilegi utente www-data?

Re: Comando shell da PHP

Inviato: martedì 6 ottobre 2009, 23:27
da ReMichael
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

Re: Comando shell da PHP

Inviato: martedì 6 ottobre 2009, 23:39
da dirty_paul
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...

Re: Comando shell da PHP

Inviato: martedì 6 ottobre 2009, 23:42
da ReMichael
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  :)

Re: Comando shell da PHP

Inviato: mercoledì 7 ottobre 2009, 10:05
da some0ne
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?

Re: Comando shell da PHP

Inviato: mercoledì 7 ottobre 2009, 10:14
da ReMichael
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

Re: Comando shell da PHP

Inviato: mercoledì 7 ottobre 2009, 10:18
da some0ne
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...

Re: Comando shell da PHP

Inviato: mercoledì 7 ottobre 2009, 10:31
da ReMichael
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

Re: Comando shell da PHP

Inviato: mercoledì 7 ottobre 2009, 10:36
da some0ne
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)

Re: Comando shell da PHP

Inviato: mercoledì 7 ottobre 2009, 10:53
da ReMichael
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

Re: Comando shell da PHP

Inviato: mercoledì 7 ottobre 2009, 10:57
da some0ne

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 ...

Re: Comando shell da PHP

Inviato: mercoledì 7 ottobre 2009, 11:01
da ReMichael
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?

Re: Comando shell da PHP

Inviato: mercoledì 7 ottobre 2009, 11:04
da some0ne
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

Re: Comando shell da PHP

Inviato: mercoledì 7 ottobre 2009, 11:07
da ReMichael
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

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)