executar shell no php??

1. executar shell no php??

jefferson r. bernardino
jefferson.rbr

(usa Ubuntu)

Enviado em 14/04/2008 - 11:01h

ola galera td blza?
estou com um serio problema em uma aplicação que estou desenvolvendo, estou tentando executar um shell dentro de uma pagina php- mas ñ estou conseguindo, ja tentei varias funçoes, tais como:

$output = shell_exec('comando');
echo "<pre>$output</pre>";
bom, até aki funcionou mas o problema é q preciso executar muitos comando dentro desta string os comandos são:

entrar como su(sudo su 'user')
entrar como superusuario postgres(su postgres)
executar uma função do postgresql(shp2pgsql -s 4291 'nomedoarquivo 'nomedatabela > 'nomeDoAruivoDeSaida')
após esses passos preciso executar o arquivo que saiu da função(psql -f 'NomeDoArquivoDeSaida' -d NomeDoBanco)

me desculpe se ñ fui claro, creio que vou conseguir ajuda de vcs, pq no meu ponto de vista é o problema é q ñ sei executa varios comandos de uma só vez.
grato a todos!!!!!!!!!


  


2. Re: executar shell no php??

Marcos Miras
marcosmiras

(usa CentOS)

Enviado em 14/04/2008 - 14:45h

Em algumas linguagens como o Perl, e até mesmo em banco de dados (mysql) você pode executar comandos do shell por um comando, o system, tipo:
mysql> system clear
Ou teste com o perl:
$ echo "system clear" > teste.pl
$ perl teste.pl
Não estou certo mas acho que o php tbm tem essa função. Teste aí e poste...
Abraço!


3. Re: executar shell no php??

jefferson r. bernardino
jefferson.rbr

(usa Ubuntu)

Enviado em 14/04/2008 - 15:29h

então marcos, existe mesmo uma função no php que faz isso é uma função chamada shell_exec(nomeDoComando).
eu até consigo utiliza-la mas o problema é que ñ consigo usa-la com varios comandos, ela entende como uma string apenas.

valeu


4. Re: executar shell no php??

Marcos Miras
marcosmiras

(usa CentOS)

Enviado em 14/04/2008 - 15:33h

hum, estou entendendo teu problema...
Olha, eu tenho quase certeza que essa função já executa como root!
Pensou em criar um script para essa função do postgre e somente rodá-la com o PHP!?


5. Re: executar shell no php??

jefferson r. bernardino
jefferson.rbr

(usa Ubuntu)

Enviado em 14/04/2008 - 15:38h

fala ai marcos,
ow valeu pela ajuda mesmo, acho q estou no caminho certo ja estou execuatndo a maioria dos comandos que preciso,só estou com uma duvida: é um pouco perigoso executar esses tipos de comandos né, ja que estou abrindo um caminho no meu s.o. como usuario root.
se estiver errado me corrija
valeu até mais


6. Re: executar shell no php??

Marcos Miras
marcosmiras

(usa CentOS)

Enviado em 15/04/2008 - 13:24h

Sim, realmente é perigoso, é uma brecha no teu servidor...
O ideal seria bloquear essa função e utilizar uma conexão ssh para fazer alterações.


7. Permissão no sudoers

Daniel Galvão de Souza
gestordesistemas

(usa Ubuntu)

Enviado em 18/05/2010 - 09:25h

Andei pesquisando na net e percebi que todos tem um ponto em comum. Alteração de segurança no arquivo /etc/sodoers

só é possível altera-lo com o usuário root e com o comando chmod 0660 /etc/sudores

depois abra com o bloco de notas e faça as alterações necessárias.

incluíndo a linha abaixo no arquivo você libera acesso para o usuário www

www ALL=NOPASSWD: ALL

assim a função shell_exec("comando") estaria pronta para ser executada. Teóricamente.

Estou com o mesmo problema na distribuição Ubuntu do Linux.

obs: "muitos comandos funcionam porem alguns (os que preciso) estão simplismente não retornam valores."


8. Re: executar shell no php??

Manoel Alves de Souza Neto
rndrama

(usa Debian)

Enviado em 18/05/2010 - 16:11h

Opa galera, tive esse problema também, precisava executar o comando arp via php e não estava conseguindo. Conseguir resolver depois de fazer as seguinte alterações:

1 - Alteração arquivo sudoers

#Permissão para o usuário do apache executar o comando arp sem necessidade de senha
www-data ALL=(ALL) NOPASSWD:/usr/sbin/arp

2 - Script php

#Usei a função exec setando o caminho inteiro do comando;
#Intuito de capturar o mac do cliente;
#Fiz a concatenação com o ip do cliente
exec("/usr/sbin/arp -a ".$ip." ", $out);

É isso galera.
Flw