我需要在Jenkins中以root身份而不是默认用户身份运行shell脚本。我需要改变什么?
我的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
答案 0 :(得分:77)
您必须使用sudo
运行脚本:
sudo /path/to/script
但在您必须允许jenkins
在/etc/sudoers
中修改脚本之前。
jenkins ALL = NOPASSWD: /path/to/script
答案 1 :(得分:12)
@Igor Chubin的回答是100%正确,但从未使用普通编辑器打开sudoer文件。总是使用visudo
只需输入
即可sudo visudo
这会将您带到/etc/sudoers
,保存后会确保格式化没有错误。
如果您在sudoer文件中出错,您将失去sudo访问权限,因此请始终使用visudo
答案 2 :(得分:6)
我确实意识到我在这个问题上已经迟到了,但是为了参考起见我以为我会把我的2c扔进这里:我使用Jenkins的SSH插件来完成这个(简单地配置一个localhost目标)。通过这种方式,我可以直接在Jenkins中包含脚本(就像普通的“执行shell”步骤一样),而不是使用sudo来调用外部脚本。
答案 3 :(得分:2)
尝试将jenkins用户添加到sudo组
sudo su -
usermod -a -G sudo jenkins
答案 4 :(得分:0)