Вызов sudo из Jenkins

Вызов sudo из Jenkins

У меня есть одна машина сборки, у которой есть пользователь abcс ограниченным доступом sudo. Когда я проверяю исходный код и запускаю свой скрипт сборки, он работает нормально. Скрипт сборки содержит sudoвызовы, для которых не указано "sudo: no tty present and no askpass program selected". Но когда я сделал то же самое с Jenkins на машине сборки, добавленной в качестве подчиненного, он показывает "sudo: no tty present and no askpass program selected".

Я нашел одно решение, говорящее закомментировать Default requirettyфайл /etc/sudoers. Но у меня нет доступа к этому файлу.

Как мне решить эту проблему?

решение1

Это не удается, поскольку sudoпроисходит попытка ввести пароль root, а псевдотерминал не выделен.

Вам необходимо либо войти в систему как пользователь root, либо настроить следующие правила в вашем /etc/sudoers (или sudo visudo:):

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

Затем убедитесь, что ваш пользователь Jenkins принадлежит к adminгруппе (или wheel).

В идеале (безопаснее) было бы ограничить привилегии root только определенными командами, которые можно указать как%admin ALL=(ALL) NOPASSWD:/path/to/program

решение2

Есть два варианта: закомментировать Defaults requirettyнастройку из /etc/sudoers, как вы упомянули, или использовать аргумент выделения псевдо-tty ( -t) для ssh.

Попробуйте следующее в вашем скрипте jenkins:

ssh -t 127.0.0.1 "sudo command"

Хотя вам придется sshнастроить предварительно общие ключи и запустить его один раз вручную, чтобы добавить запись в известные хосты, в качестве альтернативы можно добавить аргумент , -o StrictHostKeyChecking=noчтобы sshигнорировать это.

решение3

Легкий способ сделать это
введите описание изображения здесь

$ sudo visudo
## Now add the below lines in your sudoers file :
jenkins ALL=(ALL) NOPASSWD: ALL

$service jenkins start

решение4

Если вы выполняете команды через ssh, вам необходимо отметить опцию «Exec in pty». введите описание изображения здесь

Связанный контент