54

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

5 回答 5

93

您必须使用以下命令运行脚本sudo

sudo /path/to/script

但在您必须允许jenkins/etc/sudoers.

jenkins    ALL = NOPASSWD: /path/to/script
于 2012-08-09T09:10:44.517 回答
19

@Igor Chubin 的答案是 100% 正确,但永远不要使用普通编辑器打开 sudoer 文件。始终使用 visudo

只需键入

sudo visudo

这将带您进入/etc/sudoers,保存后将确保格式没有错误。

如果您在 sudoer 文件中出错,您将失去 sudo 访问权限,因此请始终使用visudo

于 2017-03-29T14:34:32.220 回答
6

我确实意识到我在这个问题上迟到了,但为了参考起见,我想我会把我的 2c 扔在这里:我使用 Jenkins 的 SSH 插件来完成这个(只需配置一个 localhost 目标)。通过这种方式,我可以将脚本直接包含在 Jenkins 中(就像普通的“执行 shell”步骤一样),而不是使用 sudo 来调用外部脚本。

于 2015-11-06T19:09:20.023 回答
2

尝试将 jenkins 用户添加到 sudo 组

sudo su -
usermod -a -G sudo jenkins
于 2020-06-15T11:17:05.410 回答
0

简单的方法
在此处输入图像描述

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

$service jenkins start
于 2021-01-21T05:50:17.773 回答