如何在 Jenkins 中以 root 身份运行脚本?
Posted
技术标签:
【中文标题】如何在 Jenkins 中以 root 身份运行脚本?【英文标题】:How to run a script as root in Jenkins? 【发布时间】:2012-08-06 11:32:45 【问题描述】:我需要在 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
【问题讨论】:
how to run jenkins as super user? 的可能重复项 【参考方案1】:您必须使用sudo
运行脚本:
sudo /path/to/script
但在您必须允许jenkins
运行/etc/sudoers
中的脚本之前。
jenkins ALL = NOPASSWD: /path/to/script
【讨论】:
@Igore 谢谢……你是 100% 正确的……我用期望命令以超级用户身份运行脚本:) 如果你想执行shell脚本更改为:“jenkins ALL=NOPASSWD: /bin/sh, /path/to/script” 然后你可以运行“sudo sh /path/to/script " 仅用于命令链接atrixnet.com/… 可以提供帮助;在我的情况下,我需要使用的不是脚本,而是命令“scp”;你的提示也很有帮助;谢谢 @nirvanaswap: sudoers.d 是一个目录,其中的文件自动包含在 /etc/sudoers 中 @Igor Chubin 的回答是 100% 正确,但永远不要使用普通编辑器打开 sudoer 文件。始终使用 visudosudo visudo
。这会将您带到 /etc/sudoers 并在保存后确保格式化没有错误。如果您在 sudoer 文件中出错,您将失去 sudo 访问权限,因此请始终使用 visudo【参考方案2】:
@Igor Chubin 的回答是 100% 正确,但永远不要使用普通编辑器打开 sudoer 文件。总是使用 visudo
只需输入
sudo visudo
这会将您带到/etc/sudoers
,保存后将确保格式没有错误。
如果您在 sudoer 文件中出错,您将失去 sudo 访问权限,因此请始终使用visudo
【讨论】:
【参考方案3】:我确实意识到我在这个问题上迟到了,但为了参考起见,我想我会把我的 2c 扔在这里:我使用 Jenkins 的 SSH 插件来完成这个(只需配置一个 localhost 目标)。通过这种方式,我可以将脚本直接包含在 Jenkins 中(就像普通的“执行 shell”步骤一样),而不是使用 sudo 来调用外部脚本。
【讨论】:
【参考方案4】:尝试将 jenkins 用户添加到 sudo 组
sudo su -
usermod -a -G sudo jenkins
【讨论】:
【参考方案5】:简单的方法
$ sudo visudo
## Now add the below lines in your sudoers file :
jenkins ALL=(ALL) NOPASSWD: ALL
$service jenkins start
【讨论】:
以上是关于如何在 Jenkins 中以 root 身份运行脚本?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 docker 中以非 root 用户身份写入卷容器?
如何在 Jenkins 中创建用户并将其添加到组中以进行身份验证?
ADB root 无法在模拟器上运行(无法在生产版本中以 root 身份运行)