2013-07-01 15 views
24

Po uruchomieniu dowolnego polecenia sudo z Jenkinsa pojawia się następujący błąd: sudo: no tty present and no askpass program specified.Najlepsze praktyki, aby uniknąć błędu Jenkinsa: sudo: brak bieżącego tty i nie określono programu wywołującego pytania

Rozumiem, że mogę rozwiązać ten problem poprzez dodanie NOPASSWD wpis do mojego pliku /etc/sudoers który pozwoli użytkownik Jenkins do wykonywania poleceń bez konieczności podania hasła. Mogę dodać wpis tak:

%jenkins ALL=(ALL)NOPASSWD:/home/me/dir/script.sh 

... ale to prowadzi do następującej kwestii: https://stackoverflow.com/questions/17414330/how-to-avoid-specifying-full-path-in-sudoers-file

mogę dodać wpis tak:

%jenkins ALL=NOPASSWD: ALL 

... ale to pozwala użytkownikowi jenkins uniknąć pytania o hasło dla poleceń ALL, co wydaje się nieco niebezpieczne. Ciekawi mnie, jakie są moje opcje, a jeśli są jakieś dobre praktyki, powinienem rozważyć.

+0

nie mogłem które zmieniają się złożyć z tego polecenia? % jenkins ALL = (ALL) NOPASSWD: /home/vts_share/test/sudotest.sh Próbuję użyć polecenia sudo również w jenkins, więc muszę wiedzieć, który plik powinien uruchomić to polecenie? – MeM

+0

To był konkretny plik na moim komputerze, edytowałem wpis, aby pokazać ogólny plik –

Odpowiedz

4

WŁ Jedną rzeczą, którą możesz zrobić, to skłonić Jenkinsa do uruchomienia skryptu, na przykład "run.sh", , następnie z poziomu tego skryptu możesz uruchomić pliki makefile i upewnić się, że w plikach Makefile nie ma żadnych poleceń sudo.

Jest to trochę kłopotów, ale przynajmniej nie ryzykują zmieniających ustawienia zabezpieczeń