Eu tenho um script que desejo que alguns de meus usuários possam executar e que requer administração. É claro que não quero conceder-lhes privilégios de administrador. Como permito que este script seja executado de maneira segura?
Atualização: Este é um sistema Ubuntu 9.10.
Responder1
Basta usar o sudo. Você precisa configurar o sudo /etc/sudoers
, algo assim:
fred ALL = (root) NOPASSWD: /path/to/command
Substitua fred pelo nome de usuário ou use %group para um grupo. Se você remover a opção NOPASSWD: a senha será solicitada sempre.
setuid em um script é inseguro e não funciona no Linux.
Responder2
sudo e SUID são ambosmuito inseguro. É possível - e, dependendo da linguagem de script, fácil - escapar de qualquer um deles. SUID é de longe o pior, e algumas linguagens de script nem funcionarão se isso for feito.
Tenho uma postagem no blog sobre como fazer isso com segurança, que escrevi primeiro paraexecutando plug-ins de verificação do Nagios como rootmas é perfeitamente aplicável aqui. Há um pequeno programa C (que está circulando no mundo administrativo do Linux há anos) que atua apenas como um wrapper em torno do script. Basta editar a fonte do programa C para incluir o caminho completo para o script, compilá-lo e, em seguida, definir esse SUID (ou conceder acesso sudo a ele). A fonte está no meu site:setuid-prog.c.
O problema inerente à execução de scripts como root (para usuários não-root) é que em muitas linguagens, usando uma variedade de técnicas (desde verificação de entrada deficiente até overflows), pode ser possível sair do script em execução e obter acesso root completo . Muitos caras antigos do Unix recomendam apenas escrever um programa C para fazer o que você precisa - mas, novamente, a maioria deles eram SAs quando vocênecessárioser capaz de escrever C com competência.
Responder3
Em qual sistema operacional?
No Linux/Unix você pode permitir que eles executem via sudo. O arquivo /etc/sudoers pode ser modificado para conceder permissões específicas em comandos designados, para determinados IDs (usuários).
Alternativamente, você pode definir o bit SUID nele e alterar o script para pertencer a um usuário privilegiado. Isso configuraria o script para ser executado como esse usuário, em vez de ser o usuário que o executa. No entanto, isso é para todos os usuários que o executam.
Responder4
Existem duas maneiras:
O melhor é definir o bit SUID nele: chown root yourscript; chmod a+s yourscript
.
Alternativamente, você pode dar-lhes acesso para modificá-lo usando sudo
, executando visudo
e seguindo as instruções. No entanto, isso é desnecessário, pois funciona executando o sudo
, que possui o bit SUID.