2016-06-02 19 views
7

Spędziłem kilka dni konfigurując archvio /etc/sudoers, aby móc udzielać uprawnień do rootowania użytkownikowi jenkins. Mam Jenkinsa zainstalowanego na moim serwerze, ponieważ obsługuję kilka projektów z symfony, ionic, neo4j, itd ... Problem polega na tym, że nie mogę budować w projektach z jonowym, otrzymuję ten błąd: sudo: no tty present and no askpass program specified. To jest treść mojego/etc/sudoers file:Jenkins sudo: no tty present i bez programu askpass określonego w NOPASSWD

# 
# This file MUST be edited with the 'visudo' command as root. 
# 
# Please consider adding local content in /etc/sudoers.d/ instead of 
# directly modifying this file. 
# 
# See the man page for details on how to write a sudoers file. 
# 
Defaults env_reset 
Defaults mail_badpass 
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 

# Host alias specification 

# User alias specification 

# Cmnd alias specification 

# User privilege specification 
root ALL=(ALL:ALL) ALL 
jenkins ALL=(ALL) NOPASSWD: ALL 
# Allow members of group sudo to execute any command 
%sudo ALL=(ALL:ALL) ALL 
+1

proszę zobaczyć http://stackoverflow.com/a/24648413/54506 (mówi o linii, która powinna być ostatnia w sudoers). – Jayan

+1

Możliwy duplikat [Jak naprawić "sudo: no tty present i nie ma określonego programu askpass" błąd?] (Http://stackoverflow.com/questions/21659637/how-to-fix-sudo-no-tty-present-and-no-askpass-program-specified-error) – Jayan

+0

Należy pamiętać, że te ustawienia 'sudoers' muszą być ustawione na określonym węźle, w którym ma miejsce kompilacja , który nie musi być "wzorcem". – luka5z

Odpowiedz

13

Przetestowałem rozwiązanie opisane przez @Jayan w komentarzach do pytania. Musisz podać nową linię na końcu pliku:

Rozwiązanie: https://stackoverflow.com/a/24648413/54506

# 
# This file MUST be edited with the 'visudo' command as root. 
# 
# Please consider adding local content in /etc/sudoers.d/ instead of 
# directly modifying this file. 
# 
# See the man page for details on how to write a sudoers file. 
# 
Defaults env_reset 
Defaults mail_badpass 
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 

# Host alias specification 

# User alias specification 

# Cmnd alias specification 

# User privilege specification 
root ALL=(ALL:ALL) ALL 

# Allow members of group sudo to execute any command 
%sudo ALL=(ALL:ALL) ALL 
jenkins ALL=(ALL) NOPASSWD: ALL 
0

Jest to całkiem możliwe, że dodajesz złego użytkownika do pliku sudoers. Zdarzyło się to również mnie, a rozwiązanie polegające na dodaniu wpisu do pliku sudoers nie działało dla mnie. Będziesz potrzebował znać rzeczywistego użytkownika, którego używają Jnkins do wykonywania poleceń. W tym celu można dodać etapu budowy (Execute shell) w twoich Jenkins za pomocą następującego polecenia:

whoami 

Następnie spróbuj ponownie uruchomić zadanie Jenkins i na wyjściu konsoli zostanie wyświetlony użytkownikowi, że Jenkins jest za pomocą wykonywać polecenia. Będziesz wtedy musiał dodać tego użytkownika do pliku sudoers. Na przykład, jeśli użytkownik był „kocur”, należy dodać następujący wiersz na końcu pliku sudoers:

tomcat ALL=(ALL) NOPASSWD: ALL 

Ref: http://techrofile.com/jenkins-sudo-no-tty-present-and-no-askpass-program-specified-with-nopasswd/

Powiązane problemy