Ответ 1
Вы должны запустить скрипт, используя sudo
:
sudo /path/to/script
Но прежде чем вы должны позволить jenkins
запустить скрипт в /etc/sudoers
.
jenkins ALL = NOPASSWD: /path/to/script
Мне нужно запустить оболочку script в Jenkins как root вместо пользователя по умолчанию. Что мне нужно изменить?
Мой файл sudoers выглядит следующим образом:
# User privilege specification
root ALL=(ALL) ALL
igx ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
# Allow members of group sudo to execute any command
# (Note that later entries override this, so you might need to move
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d
# Members of the admin group may gain root privileges
%admin ALL=(ALL) NOPASSWD:ALL
root ALL=(ALL) ALL
jenkins ALL=NOPASSWD: /var/lib/jenkins/workspace/ing00112/trunk/source/
jenkins ALL=(ALL) NOPASSWD:ALL
#Defaults:jenkins !requiretty
Вы должны запустить скрипт, используя sudo
:
sudo /path/to/script
Но прежде чем вы должны позволить jenkins
запустить скрипт в /etc/sudoers
.
jenkins ALL = NOPASSWD: /path/to/script
@Igor Chubin отвечает на 100% правильно, но никогда не открывает файл sudoer с обычным редактором. всегда используйте visudo
просто введите
sudo visudo
это приведет вас к /etc/sudoers
, и при сохранении он будет уверен, что в форматировании нет ошибки.
Если вы сделаете ошибку в файле sudoer, вы потеряете доступ к sudo, поэтому всегда используйте visudo
Я понимаю, что опаздываю на вечеринку по этому вопросу, но, ради ссылки, я подумал, что брошу здесь 2c: я использую плагин SSH для Jenkins для этого (просто настройте локальную цель). Таким образом, я могу содержать script непосредственно внутри Jenkins (как обычный шаг "Execute shell" ) вместо использования sudo для вызова внешнего script.