Вообще говоря, использование sudo
в качестве части скрипта - это нормально, если вы не предоставляете более высокие разрешения, чем вам нужно.Вместо запуска su - admin
обычно лучше выяснить, какие команды Jenkins должен запускать от имени admin, и поместить их непосредственно в файл sudoers.
Скажем, вам нужно запустить следующие программы какuser admin
как часть вашей работы в Jenkins:
/usr/bin/execute
/home/admin/calculate
/opt/synergize
Ваш файл sudoers может выглядеть примерно так (при условии, что ваш пользователь Jenkins jenkins
):
jenkins ALL = (admin) NOPASSWD: /usr/bin/execute, /home/admin/calculate, /opt/synergize
Это будетразрешить пользователю jenkins
выполнять следующие команды без пароля:
sudo -u admin /usr/bin/execute
sudo -u admin /home/admin/calculate
sudo -u admin /opt/synergize
С точки зрения безопасности это предпочтительнее, чем предоставление доступа su - admin
, так как тогда jenkins
мог бы делать все, что мог admin
без каких-либо реальных ограничений.Файл sudoers очень гибкий , и вы должны иметь возможность ограничивать jenkins, в то же время позволяя ему выполнять свою работу.