Chame o sudo de Jenkins

8

Eu tenho uma máquina de compilação que tem um usuário abc que tem acesso sudo limitado. Quando eu verifico o código-fonte e executo o meu script de compilação, ele funciona bem. O script de construção contém sudo chamadas para as quais não diz "sudo: no tty present e nenhum programa askpass especificado". Mas quando fiz a mesma coisa com Jenkins em uma máquina de compilação adicionada como escrava, ela mostra "sudo: no tty present e nenhum programa askpass especificado".

Encontrei uma solução dizendo para comentar Default requiretty no arquivo /etc/sudoers . Mas eu não tenho acesso a este arquivo.

Como posso superar esse problema?

    
por Niraj 13.10.2014 / 07:04

3 respostas

3

Existem duas opções, comente a configuração Defaults requiretty de / etc / sudoers como você mencionou ou use o argumento de alocação pseudo-tty ( -t ) para ssh .

Tente o seguinte no seu roteiro de Jenkins:

ssh -t 127.0.0.1 "sudo command"

Embora você tenha que ter ssh chaves pré-compartilhadas configuradas para você mesmo e executá-las manualmente para adicionar uma entrada a hosts conhecidos, adicione o argumento -o StrictHostKeyChecking=no a ssh para ignorar isso.

    
por 13.10.2014 / 14:46
1

Ele falha, porque sudo está tentando solicitar uma senha root e não há pseudo-tty alocada.

Você deve fazer login como root ou configurar as seguintes regras em /etc/sudoers (ou: sudo visudo ):

# Members of the admin group may gain root privileges.
%admin  ALL=(ALL) NOPASSWD:ALL

Depois, certifique-se de que seu usuário do Jenkins pertence a admin group (ou wheel ).

Idealmente (mais seguro), seria limitar os privilégios de root somente aos comandos específicos que podem ser especificados como %admin ALL=(ALL) NOPASSWD:/path/to/program

    
por 30.03.2015 / 19:30
0

Se você está executando comandos via ssh, você precisa marcar a opção "Exec in pty".

    
por 28.06.2017 / 08:49