Подтвердить что ты не робот

Лучшая практика, чтобы избежать ошибки Jenkins: sudo: нет tty настоящего и нет запрошенной программы

При запуске любой команды sudo от Jenkins я получаю следующую ошибку: sudo: no tty present and no askpass program specified.

Я понимаю, что могу решить эту проблему, добавив запись NOPASSWD в мой /etc/sudoers файл, который позволит пользователю jenkins запускать команды, не требуя пароля. Я могу добавить запись следующим образом:

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

... но это приводит к следующей проблеме: https://stackoverflow.com/info/17414330/how-to-avoid-specifying-full-path-in-sudoers-file

Я могу добавить запись вроде этого:

%jenkins ALL=NOPASSWD: ALL

... но это позволяет пользователю jenkins избегать запроса пароля для команд ВСЕ, что кажется немного небезопасным. Мне просто интересно, какие у меня варианты, и если есть какие-то лучшие практики, которые я должен рассмотреть.

4b9b3361

Ответ 1

Незначительная вещь (requiretty в sudoers) является реальной проблемой.

В принципе, закомментируйте следующие строки в файле /etc/sudoers:

#Defaults    requiretty
#Defaults   !visiblepw

Вышеприведенный из этого ответа на этот вопрос на сайте Exchange Unix и Linux Stack:

Ответ 2

Одна вещь, которую вы можете сделать, это заставить Дженкинса запустить script, например "run.sh", то изнутри этого script вы можете запускать make файлы и следить за тем, чтобы внутри make файлов не было команд sudo.

Это немного хлопот, но по крайней мере вы не рискуете изменить настройки безопасности.