O que é uma boa maneira de permitir que usuários restritos tenham a capacidade de executar um script que exija privilégios de administrador?

3

Eu tenho um script que eu quero que alguns dos meus usuários possam executar, o que requer administração. Claro que não quero conceder privilégios de administrador. Como faço para permitir que esse script seja executado de maneira segura?

Update: Este é um sistema Ubuntu 9.10.

    
por Seamus Connor 25.01.2010 / 17:56

4 respostas

2

Apenas use o sudo. Você precisa configurar o sudo em /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:, elas serão solicitadas pela senha toda vez.

setuid em um script é inseguro e não funciona no Linux.

    
por 25.01.2010 / 19:53
1

sudo e SUID são muito inseguros . É possível - e, dependendo da linguagem de script, fácil - escapar de qualquer um deles. O SUID é de longe o pior, e algumas linguagens de script nem serão executadas se isso for feito.

Eu tenho um post no blog sobre como fazê-lo com segurança, que eu escrevi primeiro para executando Nagios check plugins como root mas é perfeitamente aplicável aqui. Há um pequeno programa em C (que está flutuando no mundo administrativo do Linux há anos) que apenas funciona como um wrapper em torno do script. Você acabou de editar o código-fonte do programa C para incluir o caminho completo para o script, compilá-lo e, em seguida, definir esse SUID (ou fornecer acesso sudo a ele). A fonte está no meu site: setuid-prog.c .

O problema inerente à execução de scripts como raiz (para usuários não-raiz) é que em muitas linguagens, usando uma variedade de técnicas (de baixa verificação de entrada a sobrecargas) 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 em C para fazer o que você precisa - mas, novamente, a maioria deles era SA quando você precisava para poder escrever C com competência.

    
por 25.01.2010 / 23:17
0

Em qual sistema operacional?

No Linux / Unix, você pode permitir que eles sejam executados via sudo. O arquivo / etc / sudoers pode ser modificado para conceder a eles permissões específicas nos comandos designados, para certos IDs (usuários).

Como alternativa, você pode definir o bit SUID e alterar o script para ser de propriedade de um usuário privilegiado. Isso definiria o script para ser executado como esse usuário, em vez de o usuário executá-lo. No entanto, isso é para todos os usuários que o executam.

    
por 25.01.2010 / 17:58
0

Existem duas maneiras:

O melhor é definir o bit SUID: chown root yourscript; chmod a+s yourscript .

Como alternativa, você pode dar a eles acesso para modificá-lo usando sudo , executando visudo e seguindo as instruções. No entanto, isso é desnecessário, pois isso funciona com eles executando sudo , que tem o bit SUID.

    
por 25.01.2010 / 18:27

Tags