Eu tenho um script em execução em um usuário não raiz que, sob certas condições, deve reiniciar o apache httpd.
Qual seria a maneira mais simples de permitir que o usuário faça isso?
Estou usando o Ubuntu Server 8.04 LTS.
fonte
Eu tenho um script em execução em um usuário não raiz que, sob certas condições, deve reiniciar o apache httpd.
Qual seria a maneira mais simples de permitir que o usuário faça isso?
Estou usando o Ubuntu Server 8.04 LTS.
Resposta curta:
Usando visudo
, adicione o seguinte ao seu arquivo sudoers, substituindo o nome de usuário pelo nome de usuário apropriado:
username ALL = /etc/init.d/apache2
Se você não precisar digitar uma senha antes de fazer isso, use o seguinte:
username ALL = NOPASSWD: /etc/init.d/apache2
Depois disso, o usuário 'nome de usuário' pode executar sudo /etc/init.d/apache2 start
(ou parar, reiniciar etc.)
Resposta longa: você provavelmente desejará configurar um usuário separado para isso, se ainda não o tiver, e depois configurar o arquivo / etc / sudoers para permitir que um usuário ou grupo execute o comando desejado.
Por exemplo, para permitir que o usuário 'ben' execute todos os comandos como root solicitando uma senha, faça o seguinte:
ben ALL= ALL
Para permitir que 'ben' execute apenas um comando (como por exemplo, rm
), faça o seguinte:
ben ALL= /bin/rm
Se você estiver executando um script como usuário e não desejar solicitar uma senha, use a opção 'NOPASSWD' da seguinte forma:
ben ALL=NOPASSWD: /bin/commandname options
Você pode fazer o mesmo para grupos prefixando nomes de grupos com um sinal de porcentagem, assim:
%supportstaff ALL= NOPASSWD: /bin/commandname
username
ser restrito a um subconjunto de parâmetros? Digastart
restart
mas nãostop
?visudo
comando não faz verificações de segurança em suas edições para que você não quebrar osudo
/su
comando por acidente: unix.stackexchange.com/a/27595/61349Resposta curta: sudo.
A chamada seria semelhante à seguinte:
sudo /etc/init.d/apache2 restart
O mais fácil é usar
visudo
para configurar o arquivo / etc / sudoers. Vejaman sudoers
eman visudo
para detalhes.fonte
Você também pode fazer isso gravando um wrapper no apache2ctl, atribuindo a propriedade do grupo a um grupo de administração da web e configurando o suid bit. Essa é uma solução menos geral que o visudo, mas permite limitações personalizadas nas habilidades do usuário e na verificação de erros.
Eu escrevi essa ferramenta para minhas próprias necessidades e a compartilhei no github: https://github.com/josiahjohnston/ltd_apache2ctl
fonte