como faço para executar ações raiz de uma conta não-root?

15

Eu quero poder reiniciar os serviços a partir de um script php. executando sob a conta do usuário www.

Qual é o modo preferido de realizar essas ações?

Eu recon posso colocar criar um arquivo com comandos que, lidos pelo CRON, mas a solução coça.

O que eu estou pensando é um minúsculo serviço, rodando sob root, permitindo "métodos" predefinidos, de forma que ações arbitrárias na raiz não possam ser executadas.

Alguma ferramenta disponível para isso?

    
por user65297 08.10.2011 / 17:06

2 respostas

27

Você pode reinventar a roda, mas honestamente, eu uso o sudo sem senha para isso. Por exemplo, meu sistema de monitoramento precisa ser capaz de executar um comando para verificar o RAID de hardware. Isso requer privilégio de root, mas eu não quero rodar todo o sistema de monitoramento como root, então eu tenho em sudoers uma linha que diz

nagios  ALL=(root) NOPASSWD: /usr/lib/nagios/plugins/check_md_raid

e, em seguida, execute o comando sudo /usr/lib/nagios/plugins/check_md_raid como usuário de monitoramento, quando preciso verificar o RAID.

Você pode ter uma linha de sudoers que diga

www-user    ALL=(root) NOPASSWD: /etc/rc.d/init.d/myservice

então execute php sudo /etc/rc.d/init.d/myservice restart .

    
por 08.10.2011 / 17:11
6

Dê uma olhada no sudo : ele permite especificar ações que podem ser executadas como outro usuário (root no seu caso) .

Você pode, por exemplo, adicionar ao seu /etc/sudoers (não edite o arquivo diretamente usando visudo )

www-user-account ALL= NOPASSWD: /usr/bin/mypredefinedaction

Veja man sudo para os detalhes e a sintaxe do arquivo

    
por 08.10.2011 / 17:12