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

Mah*_*esh 45 shell hudson root jenkins

我需要在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
Run Code Online (Sandbox Code Playgroud)

Igo*_*bin 79

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

sudo /path/to/script
Run Code Online (Sandbox Code Playgroud)

但在你必须允许jenkins在其中调整脚本之前/etc/sudoers.

jenkins    ALL = NOPASSWD: /path/to/script
Run Code Online (Sandbox Code Playgroud)

  • 如果你想执行shell脚本更改为:"jenkins ALL = NOPASSWD:/ bin/sh,/ path/to/script"然后你可以运行"sudo sh/path/to/script" (3认同)
  • 仅使用命令链接http://www.atrixnet.com/allow-an-unprivileged-user-to-run-a-certain-command-with-sudo/可以提供帮助; 我的情况我需要使用的不是脚本而是命令'scp'; 你的提示也很有帮助; 谢谢 (2认同)
  • @Igor Chubin 的回答是 100% 正确的,但永远不要用普通编辑器打开 sudoer 文件。始终使用 visudo `sudo visudo`。这将带您到 /etc/sudoers 并在保存时确保格式没有错误。如果您在 sudoer 文件中出错,您将失去 sudo 访问权限,因此请始终使用 visudo (2认同)

Lav*_*tel 15

@Igor Chubin的回答是100%正确的,但从未使用普通编辑器打开sudoer文件.总是使用visudo

只需键入

sudo visudo
Run Code Online (Sandbox Code Playgroud)

这将带您到/etc/sudoers保存它将确保格式化没有错误.

如果你在sudoer文件中出错,你将失去sudo访问权限,所以总是使用 visudo


Nat*_*use 6

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