当前位置: 首页 > 面试题库 >

Jenkins CLI:使用匿名权限代替用户定义的权限

万俟穆冉
2023-03-14
问题内容

我对这个问题感到生气,不知道如何解决。

我们试图从Windows Central存储库上的钩子触发Jenkins构建。这实际上是在旧的Jenkins服务器(LTS 1.580.1)上工作的。

我们之前的操作方式是使用存储在文件中的SSH私钥调用Jenkins CLI。

这是奇怪的事情:

C:\ Users \ Username \ jenkins> java -jar jenkins-cli.jar -s
http://主机名:8080 -i ci.key list-jobs

hudson.security.AccessDeniedException2: jenkins_ci is missing the Overall/Read permission
         at hudson.security.ACL.checkPermission(ACL.java:58)
         at hudson.model.Node.checkPermission(Node.java:417)
         at hudson.cli.CLICommand.main(CLICommand.java:236)
         at hudson.cli.CliManagerImpl.main(CliManagerImpl.java:92)
         at sun.reflect.GeneratedMethodAccessor345.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
         at java.lang.reflect.Method.invoke(Method.java:483)
         at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:320)
         at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:295)
         at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:254)
         at hudson.remoting.UserRequest.perform(UserRequest.java:121)
         at hudson.remoting.UserRequest.perform(UserRequest.java:49)
         at hudson.remoting.Request$2.run(Request.java:324)
         at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
         at hudson.cli.CliManagerImpl$1.call(CliManagerImpl.java:63)
         at hudson.remoting.CallableDecoratorAdapter.call(CallableDecoratorAdapter.java:18)
         at hudson.remoting.CallableDecoratorList$1.call(CallableDecoratorList.java:21)
         at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
         at java.lang.Thread.run(Thread.java:745)

jenkins_ci用户是一个Active Directory服务帐户,大多数情况下都可以使用。在Jenkins安全矩阵中,我具有与此服务帐户相同的权限。

当我使用ssh键并运行完全相同的命令时,它就像一个超级按钮一样起作用。

如果我运行Who-I-am,但如果我更改了匿名权限,则说“
jenkins_ci”,但jenkins_ci开始起作用。似乎它没有读取定义的用户权限,而是使用了匿名用户权限。

有什么想法使它起作用吗?这是我应该报告给詹金斯(Jenkins)的错误,还是我错过了任何东西?

谢谢!


问题答案:

好的,经过几个小时的努力,我有了一个“快乐的主意”,并且成功了。

我们的Jenkins正在使用LDAP针对Active Directory进行身份验证。

不知何故,Jenkins(及其用户文件夹)创建的用户为: “ jenkins_ci” (小写),而我们的Active Directory帐户为
“ JENKINS_CI” (大写)。

詹金斯的安全性似乎以某种方式 区分大小写

我停止了Jenkins,删除了主机上的用户文件夹,然后启动了Jenkins。现在,新文件夹名为JENKINS_CI,并且CLI正在运行。



 类似资料:
  • 接口说明 获取用户权限 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /permissions/api/team/user/v1.0.0/getUserPermissionsList 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN 响应字段说

  • 接口说明 获取用户权限 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /permissions/api/team/user/v1.0.0/getUserPermissions 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN 响应字段说明 无

  • 接口说明 获取用户权限 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /permissions/api/team/user/v1.0.0/

  • 接口说明 获取用户权限 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /permissions/api/team/user/v1.0.0/

  • 主要内容:创建用户权限的步骤在本章中,我们将讨论关于项目中的用户权限。 创建用户权限的步骤 步骤(1): 登录到您的GitLab帐户,然后单击Settings选项卡下的 Members选项: 步骤(2): 它将打开下面的屏幕将成员添加到您的项目中: 步骤(3): 在“Choose a role permission” 部分下单击下拉列表时,您将看到不同类型的权限: 您可以参考添加用户章节用于设置用户权限并将用户添加到项目。

  • 我创建了两个新用户和一个新角色。为模式A中的一个表的角色授予select权限,并将此角色分配给用户b。与此用户一起对架构a中的表发出select查询时,我遇到了“未找到表或视图”问题。 创建由READUSER1标识的用户READUSER1;创建由READUSER2标识的用户READUSER2; 创建由readonlyuser标识的角色只读用户; 将READUSER1.TESTA上的select授予