Como executar um script de shell em outro usuário sem digitar a senha

4

Eu gostaria de automatizar um trabalho no hudson, mas o hudson sempre usa o usuário hudson para executar os scripts. O que eu quero é executar o script como outro usuário.

Examinei as respostas do ServerFault, mas encontrei apenas uma solução que usa o comando su , o que requer que eu digite a senha do usuário de destino. Isso não funcionará para scripts automatizados.

Alguém poderia me ajudar com isso? Obrigado.

    
por zjffdu 29.03.2012 / 09:05

3 respostas

9

Você pode usar sudo para fazer isso. Primeiro, você precisa modificar o arquivo /etc/sudoers para adicionar uma regra que permita que o usuário hudson se torne o outro usuário para o script em questão. Vamos supor que você tenha uma conta user1 que precisa executar /usr/local/bin/my_script.sh .

Execute visudo para modificar o arquivo sudoers e adicione um como:

hudson ALL=(user1) NOPASSWD: /usr/local/bin/my_script.sh

Em seguida, use o seguinte comando sudo para executar o script do hudson:

sudo -u user1 /usr/local/bin/my_script.sh

É muito importante que você use visudo para modificar o arquivo sudoers para verificar se há erros no arquivo antes de colocá-lo no lugar. Além disso, sugiro que você leia rapidamente o man sudoers para entender claramente o que ele faz antes de adicioná-lo à sua configuração.

    
por 29.03.2012 / 09:16
1

Comentar a entrada Defaults requiretty em /etc/sudoers ou outros arquivos suders incluídos deve ajudar.

Quanto ao erro perl - provavelmente você está usando um PERL5LIB diferente ou um binário perl diferente para esse usuário - e isso não será passado no sudo (a menos que você use -E ou env_keep). Verifique seu ambiente e, possivelmente, permissões.

    
por 08.11.2014 / 18:09
0

sudo -u hudson command executará o comando como usuário hudson. Ele precisa ser configurado em seu arquivo sudoers, onde você também pode configurá-lo para não exigir uma senha.

    
por 29.03.2012 / 09:11

Tags