【问题标题】:User that jenkins uses is not part of a group when jenkins job is run运行 jenkins 作业时,jenkins 使用的用户不是组的一部分
【发布时间】:2017-09-11 12:13:46
【问题描述】:

詹金斯 2.46.2.

Ubuntu 14.04

Jenkins 正在使用用户 www-data

[test] $ /bin/sh -xe /tmp/hudson7967754688382064194.sh
+ whoami
www-data
Finished: SUCCESS

当我 ssh 进入实例并切换到用户 www-data 并检查它属于哪些组时,我可以看到 docker 组。

$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data),998(docker)

当我通过运行 Jenkins 作业检查用户属于哪些组时,我看不到 docker

sh("id")
//output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

因此,我无法执行 docker 命令。为什么在这种情况下缺少这个组?

【问题讨论】:

  • 你确定jenkins是由“www-data”用户执行的吗?
  • @DurdenP 我更新了帖子。当我运行whoami 时,它会显示www-data。 Alos jenkins 进程属于 www-data。并且工作空间和 JENKINS_HOME 属于用户 www-data。
  • @raitisd 你解决过这个问题吗?

标签: ubuntu jenkins


【解决方案1】:

如果您使用 Apt 将 Jenkins 作为服务安装,则 Jenkins 将以 jenkins 用户身份运行。执行以下操作:

$usermod -a -G docker jenkins

【讨论】:

  • 我不确定这个 Jenkins 是如何安装的。在这种情况下,Jenkins 使用的是用户 www-data。如果我 ssh 我可以看到这个用户是 docker 组的一部分。
  • Jenkins 作为 Java .jar 存档运行。如果您执行ps -aef | grep java,则 jar 将以 jenkins 用户身份运行。 Jenkins 用户不习惯 ssh 进入系统。将 jenkins 用户添加到 docker 组,它会工作。
  • 不,在这台机器上它以 www-data 用户身份运行。用户jenkins 也存在于实例上,但未使用。在我发现使用 www-data 之前,我一开始就将它添加到了 docker 组。因此,jenkinswww-data 两个用户都添加到 docker 组中。问题是,当 Jenkins 作业运行时,用户不属于该组。
  • 添加用户到docker组后有没有重启jenkins?
  • 我通过浏览器 jenkinsurl.com/restart 重新启动了 Jenkins。我没有办法重新启动它自己的实例。我可能有办法从像 tho 这样的命令重新启动 Jenkins,使用 service jenkins restart 或像这样的 smtn。
猜你喜欢
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多