Jenkins作为特定用户运行不起作用

时间:2015-12-03 10:47:07

标签: authentication jenkins permissions jenkins-plugins

我正在努力让Jenkins作为特定的Linux用户运行作业。

我已设置安全性以使用Unix身份验证并安装"Authorize Project" plugin

我在~/bin目录中编写了一个简单的脚本,该脚本向我发送了一封邮件,其中包含“Hello $ USER”消息。

在Jenkins中,我设置了一个工作并使用Authorize Project插件选择run as specific user和我的用户名。

当我尝试创建构建时,作业失败。如果我查看输出控制台,消息说我的用户已经启动了该作业,该作业已由我运行。但随后作业失败,因为脚本实际上是由用户jenkins运行的,用户{{1}}没有所有必需的权限(也没有设置环境变量)。

我做错了吗?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

例如:作业A可由用户Alpha和Beta运行,作业A运行作业B,作业B只能由Alpha运行。

通常,Alpha或Beta可以运行作业A,这将运行作业B没问题,因为作业B默认将作为系统用户运行。

但在某些情况下,您可能希望强制Beta无法运行作业B,无论他们如何启动该过程。因此,作业A可以设置为"以触发构建的用户身份运行"。当Beta运行作业A时,作业A无法运行作业B,因为强制用户是Beta并且Beta无法运行作业B.

反之亦然:Beta不允许直接运行作业B.但是如果他们运行某个特定的进程(运行Job A),那么他们可以间接运行Job B.将作业A设置为"以指定用户身份运行"并指定可以运行作业B的用户(例如Alpha)将允许Beta通过作业A运行作业B.