Ligar para sudo de Jenkins

8

Eu tenho uma máquina de compilação que possui um usuário abccom acesso limitado ao sudo. Quando eu verifico o código-fonte e executo meu script de compilação, ele funciona bem. O script de construção contém sudochamadas 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, ele mostra "sudo: no tty present e nenhum programa askpass especificado".

Eu encontrei uma solução dizendo para comentar Default requirettyno arquivo /etc/sudoers. Mas não tenho acesso a esse arquivo.

Como posso superar esse problema?

Niraj
fonte
Este comando que você está tentando executar via sudopode executar sem inserir uma senha? Se você precisar digitar uma senha, o sudo exigirá um tty.
Patrick
Sim .it é executado sem digitar uma senha
Niraj

Respostas:

3

Existem duas opções: comente a Defaults requirettyconfiguração de / etc / sudoers como você mencionou ou use o -targumento pseudo-tty alocação ( ) para ssh.

Tente o seguinte no seu script jenkins:

ssh -t 127.0.0.1 "sudo command"

Embora você precise ter sshchaves pré-compartilhadas configuradas para si mesmo e executá-la uma vez manualmente para adicionar uma entrada a hosts conhecidos, adicione o -o StrictHostKeyChecking=noargumento sshpara ignorar isso.

geedoubleya
fonte
2

Ele falha, porque sudoestá tentando solicitar a senha root e não há pseudo-tty alocado.

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

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

Em seguida, verifique se o usuário do Jenkins pertence ao admingrupo (ou wheel).

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

kenorb
fonte
2
Ainda requer um TTY.
Corridas do Lightness em órbita
0

Se você estiver executando comandos via ssh, precisará marcar a opção "Exec in pty". insira a descrição da imagem aqui

Sanny Patel
fonte