以root用户身份在jenkins中运行shell命令?

Raj*_*pta 13 linux shell root jenkins

我最近开始使用Jenkins进行集成.一切顺利,直到我在没有shell命令的主节点上运行作业,但我必须在master和slave节点上运行包含shell命令的作业.我无法以root用户身份运行这些shell命令.我试过了

  1. SSH Keys.
  2. 在shell命令中设置用户名.
  3. sudo.

permission denied每次使用上述任何一种方法时都会出错.

ode*_*den 30

我建议不要以root身份运行jenkins用户.这可能会暴露操作系统和jenkins可以构建的所有repo.

以root身份运行任何脚本都存在安全风险,但更安全的方法是授予jenkins用户sudo访问权限,只运行一个脚本,而无需密码.

sudo visudo
Run Code Online (Sandbox Code Playgroud)

并添加以下内容:

jenkins    ALL = NOPASSWD: /var/lib/jenkins/jobs/[job name]/workspace/script
Run Code Online (Sandbox Code Playgroud)

通过失败的构建脚本的控制台日志仔细检查您的路径.此处显示的是默认值.

现在你可以打电话给jenkins任务 sudo $WORKSPACE/your script


Pul*_*kit 24

您需要修改jenkins用户权限,以便可以运行shell命令.您可以将jenkins安装为服务(下载rpm包),您可能需要更改端口,因为默认情况下它在8080上运行http,在8009端口上运行AJP.



以下过程适用于CentOS
1.打开此脚本(使用VIM或其他编辑器):

vim /etc/sysconfig/jenkins
Run Code Online (Sandbox Code Playgroud)

2.找到$JENKINS_USER并更改为"root":

$JENKINS_USER="root"
Run Code Online (Sandbox Code Playgroud)

3.然后更改Jenkins home,webroot和logs的所有权:

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
Run Code Online (Sandbox Code Playgroud)

4)重启Jenkins并检查用户是否已更改:

service jenkins restart
ps -ef | grep jenkins
Run Code Online (Sandbox Code Playgroud)

现在,您应该能够以root用户身份运行Jenkins作业,并且将执行所有shell命令root.

  • 运行显示允许您以root身份运行脚本的Web界面的服务是一个非常糟糕的主意. (13认同)