shell_exec(sarg -d usuario)

1. shell_exec(sarg -d usuario)

Silvério Coelho Sepulveda
isilver

(usa CentOS)

Enviado em 26/03/2012 - 14:22h

Saudações a todos.

Estou tentando criar um gerador de relatório sarg pelo PHP, o arquivo é o seguinte.

<?php
extract($_POST);
$parametros = "sarg ";

if($usuario != 'vazio') $parametros .= "-u $usuario ";

if($df == '') $dftemp = date('d/m/Y');

if($di != '') $parametros .= '-d '. $di.'-'.$df;

shell_exec("sudo sarg -u dudu");
?>

Passo os parametros por um formulário.

Quanto aos parametros está tudo ok, a dificuldade é que não consigo executar eu executo o mesmo comando no shell e funciona.

Se alguém puder ajudar agradeço.


  


2. Re: shell_exec(sarg -d usuario)

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 27/03/2012 - 12:26h

Teria que ver qual usuário é usado para executar o shell_exec dentro do PHP, acredito que seja o www-data do apache.

Ai o sudo su...., ficaria a cargo desse usuário e não do que vc executa dentro do seu terminal.


Ainda tem o fato do sudo su exigir senha, e ai como faria??

Acabei fazendo perguntas ;-), mas servem para ajudar no raciocínio da situação.


3. Re: shell_exec(sarg -d usuario)

Antonio Carlos Tafari Filho
Tafari

(usa Fedora)

Enviado em 15/04/2012 - 17:00h

Olá.

Vou responder pelo pouco que sei.

Primeiro, você precisa dar acesso ao usuário responsável por rodar comandos shell do Apache.

No meu caso, o usuário era o apache.

Como root, digite: visudo

Acrescente a linha abaixo, modificando o caminho dos executaveis de acordo com o necessário (com vírgula entre os comandos).

apache ALL=NOPASSWD:/usr/sbin/xxxxxx,/usr/bin/yyyyyy

Reinicie o Apache

Você também precisa verificar se o SElinux (caso existente) esteja bloqueando este tipo de operacão. Se estiver, você precisa liberar o acesso.

Ainda, para verificar se o comando passado por shell está correto, eu li sobre uma gambiarra: colocar 2>&1 ao final da linha.

Salvo engano, por padrão, o shell_exec, caso não seja executado, a variável retorna nula. Com o 2>&1 ele retorna o erro do shell.

<?php

$teste = shell_exec("sudo sarg -u dudu 2>&1");

echo $teste;

?>

Observacão: Desconheco potenciais falhas de seguranca em adotar este procedimento.

Espero ter ajudado.

Abracos.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts