Sudo executa o comando em Pythonscript

1

Eu quero sudo um comando de um pythonscript sem codificar minha senha nele. O Pythonscript faz parte de um webservice no Apache2. Como faz parte de um serviço web, pedir ao usuário cada vez pela senha não é uma opção, nem dá direitos totais para a pasta inteira.

O comando deve executar um arquivo C ++ compilado (cujo nome está armazenado na variável "CMDexecutable"). Este arquivo C ++ compilado está localizado em uma pasta temporária que está sendo criada como parte do serviço com um nome aleatório. O caminho é armazenado na variável "rundir_temp". Este diretório é de livre acesso na web.

Agora, tenho o seguinte no meu Pythonscript:

Popen(os.path.join(rundir_temp,CMDexecutable),stdout=PIPE)

Isso não executa o script que tenho. Eu só posso executar o arquivo C ++ compilado, digitando o seguinte no terminal, enquanto no diretório "rundir_temp":

sudo ./CMDexecutable

Tudo funciona perfeitamente então.

Como posso dar direitos sudo a este comando no meu Pythonscript sem codificar minha senha?

Encontrei this thread que discute um tópico muito similar, mas eu simplesmente não consigo trabalhar ... Sou novo em Python e Ubuntu, então provavelmente esquecendo de algo básico?

Eu tenho o Ubuntu 14.04 LTS e o Python 2.7.6

Obrigado antecipadamente !!

    
por SgtPepper88 01.02.2016 / 19:01

1 resposta

0

Da sua pergunta, não está totalmente claro se você precisa estar dentro do diretório CMDexecutable (e, portanto, cd ) ou se o caminho completo serviria, mas a única A opção que vejo é adicionar o script ao arquivo sudoers , conforme descrito aqui .
Então você pode executar o script com sudo , sem precisar digitar a senha.
Você pode simplesmente executar o script ( python ) e, em seguida, pelo comando

sudo <script>

como foi dito, sem ser solicitada a senha.

Nota (muito) importante

É evidente que você precisa armazenar o script em um local onde não possa ser editado sem sudo privileges. Como o script pode ser executado sem digitar a senha, você precisa ter certeza de que seu conteúdo não será alterado por nenhum outro processo ou código possivelmente malicioso.

Além disso, (talvez seja superfluously, mas já que eu não sei o contexto exato) pelo mesmo motivo, você precisa ter absoluta certeza de que CMDexecutable e tudo o que ele roda não é possível alvo de "alterações maliciosas".

Editar

Como você mencionou que não pode alterar o comando inicial para executar o script python em um comando sudo , faça o seguinte:

  • Dentro do seu script python , crie um comando para executar um script secundário , executado com o sudo:

    sudo <script>
    
  • Adicione este script secundário ao arquivo sudoers , para ser executado sem senha. Dessa forma, o script python (main) executará o comando sem precisar digitar a senha.

Gostaria de salientar, no entanto, que isso parece uma manta de retalhos, e não tenho conhecimento sobre possíveis riscos de segurança. Certifique-se de que todos os arquivos executados a partir do primeiro comando sudo "tree" não são alvos possíveis para edição mal-intencionada.

    
por Jacob Vlijm 01.02.2016 / 20:08