Problema com o php shell_exec () [duplicado]

1

Aqui eu recebo uma querystring dependendo do valor do comando shell_exec() .

Estou recebendo um valor a querystring, mas shell_exec() não está funcionando.

Estou usando uma webcam conectada ao Raspberry pi 3, então o comando em shell_exec() é para desligar a webcam.

$output=shell_exec('sudo /etc/init.d/motion start')

código:

<?php
$status=$_GET['status'];
if($status == 'on')
{
    $output=shell_exec('sudo /etc/init.d/motion start');
}
if($status == 'off')
{
    $output=shell_exec('sudo /etc/init.d/motion start');
}

Como resolvo o problema de execução?

    
por Ann 04.04.2018 / 14:09

1 resposta

0

em vez de tentar dar direitos de sudo de usuário de apache / http, a maneira usual é criar binário de wrapper suid assim:

$ sudo gcc -o suidmotion -xc - <<cEnd
#include "stdlib.h"
#include "string.h"
int main(int argc, char *argv[])
{  if (argc ==2) 
   {  if (!strcmp(argv[1], "start")) system("/etc/init.d/motion start");
      if (!strcmp(argv[1], "stop" )) system("/etc/init.d/motion stop");
   }
}
cEnd
$ sudo chmod +s suidmotion

... e do que no php para chamar shell_exec("/path/to/suidmotion start/stop");

sudo gcc produzirá o binário de saída suidmotion pertencente a root:root e chmod +s garantirá que os direitos binários na execução serão escalados para o proprietário binário (raiz), independentemente de quem o executar.

    
por 04.04.2018 / 15:55