如何在Jenkins中以root身份运行脚本?

时间:2012-08-09 09:08:56

标签: shell hudson jenkins root

我需要在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

5 个答案:

答案 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)

简单的方法
enter image description here

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

$service jenkins start