我对这个问题感到生气,不知道如何解决。
我们试图从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授予