jenkins slave作为用户运行

时间:2017-06-09 08:57:11

标签: jenkins permissions active-directory

我有一个jenkins设置,其中有多个用户使用Active Directory plugin登录。这很有用,这样每个用户都可以访问自己的任务。

但是每个用户在本地网络上也有不同的权限,例如访问不同的文件夹等。我注意到,给每个任务的权限没有链接到用户,而是链接到运行从属的帐户。服务。有没有办法改变它,以便在用户的凭证(以及因此权限)下在奴隶上执行任务?

谢谢

3 个答案:

答案 0 :(得分:5)

问题是:Jenkins主机只有一个从属进程运行分配给该服务器的不同作业 因此,从属设备本身作为一个用户(通常是专用帐户或系统帐户)运行。

由于您可以将用户ID作为环境变量(使用JENKINS Build User Vars Plugin之类的插件),因此您可以考虑配置作业以使其构建步骤为"运行为"触发构建的用户。
例如,请参阅JENKINS Authorize Project plugin

https://wiki.jenkins-ci.org/download/attachments/70877566/authorize-project_01_globalsecurity.png?version=2&modificationDate=1439085782000&api=v2

https://wiki.jenkins-ci.org/download/attachments/70877566/authorization-page.png?version=1&modificationDate=1486871612000&api=v2

但是,mentioned this answer

  

"授权项目"插件不会更改正在运行命令的操作系统级别用户   它只使用Jenkins身份验证(无论它可能是什么)设置运行作业和任何下游作业的Jenkins用户。

因此,您需要build step with runas or su -c commands才能确定您的任务确实与合适的用户一起运行。

答案 1 :(得分:1)

我有类似的问题,我可以回忆一下,我使用role strategy plugin管理对项目的更多控制,并使用LDAP服务器设置全局安全性(Active目录也应该没问题)。 我使用了authorized project plugin。 看看,我希望它能解决你的目的。如有任何澄清,请在评论部分告诉我。

答案 2 :(得分:1)

您可以通过这种方式部分解决问题:

  • 使用Java Web Start方法和JLNP将从属服务器安装为服务
  • 转到Windows中的“服务”控制面板
  • 在“属性”->“连接”下,用特定用户替换本地系统连接
  • 重新启动服务

这至少使您能够使用一个帐户代替系统。