Usando comandos do Sudo via página da Web

1

Estou trabalhando na página da Web onde você clica no botão executar o arquivo no superusuário. Eu estou tentando executar topologia mininet usando o script python via página da web.

<?php
$mininet='sudo python loadbalancing.py';
$python=exec($mininet);
echo $python;
?>

Quando executo o código acima, ele não retorna nada.

No entanto, quando executo o código abaixo, ele retorna *** Mininet deve ser executado como root.

   <?php
    $mininet='sudo python loadbalancing.py';
    $python=exec($mininet);
    echo $python;
    ?>

Alguém pode me ajudar, como executar o script python mininet via página da web.

Eu configurei a super permissão via "visudo" e chmod, mas ainda não funciona. No visudo, adicionei o seguinte.

%sudo   ALL=(ALL) NOPASSWD: /var/www/html/loadbalancing.py

Eu configurei

sudo chmod 777 loadbalancing.py
sudo chmod 755 loadbalancing.py

Mas ainda não funciona ou executa o script python na página da web.

Nota: não se preocupe com a segurança, pois haverá um processo de autenticação antes deste processo.

Obrigado.

    
por Cin Sb Sangpi 09.03.2017 / 06:26

1 resposta

0

Eu estou fazendo algumas suposições aqui ... Eu suspeito que sua segunda pasta de código foi feita para ser idêntica à sua primeira - apenas sem o sudo. É por isso que você tem o erro "deve ser executado como root". Eu também suspeito que seu primeiro bloco de código não retornou nada porque ficou preso em um prompt interativo de senha sudo.

Eu não sei nada sobre php ou mininet, mas quando vejo seu snippet acima, eu me pergunto se a conta de usuário executando o script tem a capacidade de sudo sem senha. Por exemplo, se o seu script estava sendo executado como "myuser", você precisaria de algo assim no arquivo / etc / sudoers:

myuser ALL=(ALL) NOPASSWD: ALL

Sem "NOPASSWD", seu serviço fica preso esperando a senha do myuser em uma tentativa de sudo. Como o serviço não pode manipular um prompt interativo, ele morre e você não recebe nada retornado.

aviso padrão: o sudo sem necessidade de senha é perigoso. Usá-lo para executar comandos arbitrários com base na entrada do usuário de uma página da Web é uma loucura, a menos que você esteja em um ambiente restrito de sandbox.

    
por James 09.03.2017 / 07:18