Como abrir um terminal com privilégios de root a partir de um aplicativo da web baseado em php

-1

Eu tenho uma aplicação web na máquina do ubuntu lampp Eu preciso abrir um terminal para executar algumas operações alguém pode me ajudar com isso

Obrigado antecipadamente

    
por Asha N 28.05.2017 / 17:42

2 respostas

2

Não, essa é a abordagem errada. Eu faria mais ou menos assim:

  • Armazene os dados do site no servidor em um banco de dados ou como um arquivo de texto.
  • Use um script (um serviço ou um inspetor de diretórios em /etc/crontab ) no servidor em que você preenche um arquivo no banco de dados ou crie um arquivo de texto com os dados desse arquivo de texto
  • faça com que a página pegue esses novos dados depois que você manipulou os dados para obter os resultados desejados.

A abordagem do banco de dados é melhor, mas um pouco mais de trabalho. Um banco de dados bem projetado força você a validar os dados e facilita a manipulação dos dados. Você pode usar um "procedimento" no MySQL para manipular os dados. Baixar um arquivo de texto é mais fácil, mas validar e manipular um arquivo de texto pode ser complicado.

    
por Rinzwind 01.06.2017 / 22:02
0

Uma alternativa à abordagem de Rinzwind é esta:

  1. Escreva um script que envolva o comando privilegiado, e. g.,

    #!/bin/sh
    set -eu
    input="$1"
    output="$2"
    exec /path/to/data-analysis-program [OPTIONS...] "$input" "$output"
    

    Salve-o como, por exemplo, /other/path/to-data-analysis-wrapper.sh e torne-o executável:

    chmod +x /other/path/to-data-analysis-wrapper.sh
    

    Teste se o script do wrapper faz o que você quer com:

    sudo /other/path/to-data-analysis-wrapper.sh <INPUT-FILE> <OUTPUT-FILE>
    
  2. Transferir a propriedade do arquivo para um usuário que o torne não gravável para o usuário que possui o processo do servidor da Web, e. g. root :

    sudo chown root /other/path/to-data-analysis-wrapper.sh
    
  3. Configure sudoers para permitir a execução do script pelo usuário que possui o processo do servidor da Web com privilégios elevados. Consulte Como executo comandos sudo específicos sem uma senha? para saber como fazer isso em geral e usar a seguinte regra (ou ajustá-la ao seu gosto):

    www-data ALL = (root) NOPASSWD: /other/path/to-data-analysis-wrapper.sh *
    
  4. Agora você pode executar sudo /other/path/to-data-analysis-wrapper.sh <INPUT-FILE> <OUTPUT-FILE> de scripts CGI em execução em nome do servidor da Web.

Uma abordagem ainda melhor é configurar seus processos de análise de dados de uma maneira que não exija privilégios de superusuário. Se isso é apenas sobre processamento de números e não sobre acesso privilegiado ao sistema ou hardware, então deve haver uma maneira relativamente simples. Por favor, abra uma nova pergunta e descreva a situação com mais profundidade se você quiser seguir essa estrada.

    
por David Foerster 01.06.2017 / 23:53