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

时间:2015-04-28 18:05:33

标签: linux shell jenkins root

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

  1. 使用SSH Keys
  2. 在shell命令中设置用户名。
  3. 使用sudo
  4. 每次使用上述任何方法时,我都会收到permission denied错误。

6 个答案:

答案 0 :(得分:26)

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

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

sudo visudo

并添加以下内容:

jenkins    ALL = NOPASSWD: /var/lib/jenkins/jobs/[job name]/workspace/script

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

现在,在jenkins任务中,您可以拨打sudo $WORKSPACE/your script

答案 1 :(得分:20)

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



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

vim /etc/sysconfig/jenkins

2。找到此$JENKINS_USER并更改为“root”:

$JENKINS_USER="root"

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

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

service jenkins restart
ps -ef | grep jenkins

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

答案 2 :(得分:0)

对于Linux,请尝试执行以下步骤:-

对我有用。

  1. sudo vi / etc / default / jenkins

  2. $ JENKINS_USER =“ root”

  3. sudo chown -R root:root / var / lib / jenkins

    sudo chown -R root:root / var / cache / jenkins

    sudo chown -R root:root / var / log / jenkins

  4. 服务jenkins重新启动ps -ef | grep jenkins

答案 3 :(得分:-1)

我同意o / o, 当你尝试运行appium时,运行Jenkins作为root也会出现问题,因为如果使用或安装了sudo"它将无法运行。

答案 4 :(得分:-1)

另一种选择是设置一个jenkins“Slave”,它实际上是在master上以root身份运行并将其限制为绑定的作业,然后将你的工作指向该slave。远非理想,但肯定是一个快速解决方案。

答案 5 :(得分:-2)

您只需要使用Jenkins的Root权限在Linux机器上运行shell命令。

步骤:

1)sudo vi /etc/sudoers

2)添加行:

jenkins ALL=NOPASSWD:/path of script/

3)从Jenkins,使用sudo在远程shell上运行脚本。 例如:sudo ps -ef

4)立即建立Jenkins工作。 此作业使用root权限在Linux机器上运行脚本。