Eu tenho uma máquina de compilação que possui um usuário abc
com 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 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, ele mostra "sudo: no tty present e nenhum programa askpass especificado".
Eu encontrei uma solução dizendo para comentar Default requiretty
no arquivo /etc/sudoers
. Mas não tenho acesso a esse arquivo.
Como posso superar esse problema?
sudo
tty
not-root-user
jenkins
Niraj
fonte
fonte
sudo
pode executar sem inserir uma senha? Se você precisar digitar uma senha, o sudo exigirá um tty.Respostas:
Existem duas opções: comente a
Defaults requiretty
configuração de / etc / sudoers como você mencionou ou use o-t
argumento pseudo-tty alocação ( ) parassh
.Tente o seguinte no seu script jenkins:
ssh -t 127.0.0.1 "sudo command"
Embora você precise ter
ssh
chaves pré-compartilhadas configuradas para si mesmo e executá-la uma vez manualmente para adicionar uma entrada a hosts conhecidos, adicione o-o StrictHostKeyChecking=no
argumentossh
para ignorar isso.fonte
Ele falha, porque
sudo
está 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
(ousudo visudo
:):Em seguida, verifique se o usuário do Jenkins pertence ao
admin
grupo (ouwheel
).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
fonte
Se você estiver executando comandos via ssh, precisará marcar a opção "Exec in pty".
fonte