Позвоните Сьюдо из Дженкинс


8

У меня есть одна машина сборки, у которой есть пользователь abcс ограниченным доступом sudo. Когда я проверяю исходный код и запускаю свой скрипт сборки, он работает нормально. Скрипт сборки содержит sudoвызовы, для которых он не говорит «sudo: нет tty присутствует и не задана программа askpass». Но когда я проделал то же самое с Дженкинсом на сборочной машине, добавленной в качестве ведомой, она показала «sudo: нет tty присутствует и не задана программа askpass».

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

Как я могу преодолеть эту проблему?


sudoРазрешено ли запускать эту команду с помощью пароля без ввода пароля? Если вам нужно ввести пароль, sudo потребует tty.
Патрик

Да .. он работает без ввода пароля
Niraj

Ответы:


3

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

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

ssh -t 127.0.0.1 "sudo command"

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


2

Не удается, потому что sudoпытается запросить пароль root и псевдо-tty не выделено.

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

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

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

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


2
Это все еще требует TTY.
Гонки легкости на орбите

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.