Como executo o Apache como root?

-4

Ok, preciso executar meu servidor da web Apache como root. Para isso eu digitei echo whoami ; no terminal. Isso me dá saída: root. Mas quando eu checar meu servidor apache rodando como um usuário root ou não executando o seguinte script php:

< ?php echo 'whoami';  ?>

Isso me dá saída: nobody . Então, alguma sugestão para executar / login como usuário root no Apache?

    
por Alee 26.03.2012 / 15:58

2 respostas

6

O que você está pedindo é muito perigoso porque qualquer nova vulnerabilidade encontrada no Apache pode ser explorada como root. Uma das primeiras coisas que os web masters fazem ao proteger seu servidor da Web é não executar o aplicativo do servidor como root. Dito isso, ofereço a seguinte alternativa que deve atender à necessidade como você declarou.

  1. Crie um script de shell que faça o que você deseja. Este não é um script PHP como o PHP é executado dentro do servidor web, você precisa de um script que é executado pelo Ubuntu. Aqui está uma amostra:

    #!/bin/sh
    # script that runs as root
    whoami
    

    Eu chamei este arquivo /localstore/root.sh e você deve colocá-lo em algum lugar que faça sentido em seus sistemas (por exemplo, /home/www_data/bin ).

  2. Em uma janela de terminal, execute o comando sudo vi /etc/sudoers e insira a seguinte linha no final do arquivo (importante estar no final para que os outros comandos não sejam anulados):

    ALL ALL=NOPASSWD: /localstore/root.sh
    

    Isso permitirá que qualquer pessoa execute o script como root, assim que você testar e confirmar o trabalho, eu recomendo que recomende (novamente por motivos de segurança) que você altere a linha para

    nobody ALL=NOPASSWD: /localstore/root.sh
    

    mas, como Bodhi observou, o Apache deve ser executado como www-data . Nesse caso, você deve alterar nobody para www-data . NOTA: Eu nunca tentei sudo com nobody como o usuário e não tenho certeza se isso funcionará.

  3. Em seu script de servidor da Web, execute o script de shell no PHP da seguinte forma:

    < ?php
    exec ("sudo /localstore/root.sh");
    ?>
    

    Você pode adicionar parâmetros ao script dentro das aspas.

    Isso deve fazer com que o script root.sh seja executado como root quando invocado em seu servidor web. Se você tiver outros scripts, eles poderão ser uma lista separada por vírgulas na mesma entrada no arquivo sudoers . Certifique-se de que as permissões no script permitam a execução pelo servidor da Web.

por Hey Gary 19.04.2012 / 16:42
0

Gostaria de saber se o requisito é devido à execução em um ambiente virtual com o Virtual Web Server usando o diretório compartilhado, caso em que a propriedade do diretório será raiz para que possa ser acessada pelos sistemas de arquivos host e guest. A solução pode ser adicionar o grupo www-data ao grupo vboxfs ou qualquer que seja o seu ambiente. Isso é discutido em mais detalhes em Este artigo

Na minha situação, também fui confundido pelo requisito de incluir uma opção na minha configuração de host virtual - especificamente adicionando o

Require all granted

dentro da minha configuração de diretório, conforme descrito em este artigo

    
por Peter Scott 02.04.2018 / 20:31