Como posso usar o SetUID em um script de shell para ser executado como um usuário não-root?

4

O servidor da nossa empresa está executando o Ubuntu 12.04 (Precise) e o Apache 2. Temos um aplicativo da Web interno personalizado instalado. Eu tenho um script bash que puxa as atualizações para o aplicativo de controle de origem para o servidor. Apenas um usuário no sistema (o proprietário do arquivo de script) tem as chaves SSH necessárias para se conectar ao controle de origem, mas gostaria que qualquer usuário no sistema pudesse executar esse script para atualizar o aplicativo.

Eu fiz algumas pesquisas, e parece que este é exatamente o propósito para o qual o bit setuid foi projetado, para que qualquer usuário no sistema possa executar o script e o script seja executado com o ID do usuário. do roteiro. No entanto, parece que as distribuições modernas ignoram o bit setuid dos scripts, por causa dos riscos de segurança apresentados se um script de propriedade do root fosse executado.

Eu pensei que poderia contornar isso por um tempo, tornando-o um script perl, mas a partir de Precise, não há mais nenhum pacote suid-perl. Parece que esta foi preterida.

Encontrei alguns sites que recomendam contornar isso adicionando os usuários ao arquivo sudoers, mas o meu script não requer permissões de root para ser executado e não faz alterações em nenhuma parte do sistema de arquivos, exceto o site , então eu prefiro não conceder privilégios de sudoer a ninguém. O script requer apenas as permissões do proprietário do script para ser executado corretamente.

Então, qual é a abordagem moderna e preferida para executar um script com o UID de um usuário (diferente, não-raiz, não-sudo)?

    
por Jazz 12.06.2012 / 18:40

1 resposta

4

Você pode configurar o sudo para permitir que as pessoas executem um comando como um usuário não root específico, por exemplo, em sudoers

user1   (ALL) = (appuser) /path/to/yourapp

permitiria que o usuário user1 executasse seu aplicativo como appuser com

sudo -u appuser /path/to/yourapp

Similarmente

%somegroup    (ALL) = (appuser) /path/to/yourapp

em sudoers permitiria que os usuários do grupo somegroup executassem seu aplicativo como appuser com

sudo -u appuser /path/to/yourapp
    
por 12.06.2012 / 18:59