詹金斯(Jenkins):启用全球安全性后,访问被拒绝。如何还原?


14

需要帮助弄清楚这一点。如何解决此问题?我想我启用了全局安全性并立即看到此错误。

(在访问localhost:8080时,我得到以下信息...)

A problem occurred while processing the request. Please check our bug tracker to see if a similar problem has already been reported. If it is already reported, please vote and put a comment on it to let us gauge the impact of the problem. If you think this is a new issue, please file a new issue. When you file an issue, make sure to add the entire stack trace, along with the version of Jenkins and relevant plugins. The users list might be also useful in understanding what has happened.

Stack trace
hudson.security.AccessDeniedException2: anonymous is missing the Overall/Read permission
    at hudson.security.ACL.checkPermission(ACL.java:54)
    at hudson.model.Node.checkPermission(Node.java:418)
    at jenkins.model.Jenkins.getTarget(Jenkins.java:3658)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:656)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:225)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:370)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
    at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:695)

Answers:


14

编辑config.xml并将以下两个xml标记替换为以下版本。然后重新启动服务器。

  <authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
  <securityRealm class="hudson.security.SecurityRealm$None"/>

当心,您现有的标签可能每个跨越几行。


我应该在哪里找config.xml
sobi3ch 2015年

好的,我找到了它..通常是打开的,$JENKINS_HOME但是在我的情况下它是空的。在Ubuntu上,我在中找到了它/var/lib/jenkins/
sobi3ch 2015年

虽然这个问题的答案很好,但这个答案也比较通用。如果您搞砸了安全设置(或IT部门更改了LDAP),并且需要重新进入锁定的Jenkins,则清除config.xml中的安全性并添加上述xml标记将使您重新开始。
gnuchu '16

11

之所以收到此错误,是因为您启用了安全性,但没有任何用户具有权限。要解决此问题,请首先config.xml将其设置useSecurityfalse

我假设您要使用本地身份验证(用户的本地数据库),而不是外部数据库(即LDAP)。请遵循Jenkins文档中的以下步骤。

  1. 转到“配置全局安全性”屏幕(http:// server / jenkins / configureSecurity /),然后选择“启用安全性”。尝试使用的备用URL是http:// server:8080 / configureSecurity
  2. 选择“ Jenkins自己的用户数据库”作为安全领域
  3. 选中“允许用户注册”旁边的复选标记
  4. 选择“基于矩阵的安全性”作为授权
  5. 授予匿名用户读取权限
  6. 在表格下方的文本框中,输入您的用户名(稍后再创建),然后点击“添加”
  7. 通过检查整行的用户名来授予自己完全访问权限
  8. 一直滚动到底部,单击“保存”

已通过1.566版进行测试。


我建议还原接受的答案中建议的更改,因为它可能会影响上述步骤。


怎么<useSecurity>false</useSecurity>办?
Alex

@alex会禁用Jenkins的安全性,以便您可以登录并重新配置。jenkins.io/doc/book/system-administration/security/…–
amertkara

2

两线修复(在服务器上运行):

sudo ex +g/useSecurity/d +g/authorizationStrategy/d -scwq /var/lib/jenkins/config.xml
sudo /etc/init.d/jenkins restart

注意:该sudo权限是必需的,或者以身份运行root

然后照常登录到Jenkins,然后重新配置安全性。


0

类似的问题,我面对但GitHub的OAuth的插件,这要归功于同意的答案在这里,我的问题和解决方案解释 这里


0

在Windows中:在全局安全性下启用LDAP时,我也失去了管理员权限。错误为“拒绝访问缺少“总体/读取”权限的詹金斯窗口”。

在这种情况下,请保留现有实例,在其他计算机或VM上安装新的jenkins。从Jenkins_Home复制config.xml,并从Jenkin_Home目录中将其替换为config.xml。执行此操作时,请确保Jenkins服务已停止。替换后,启动实例和VOILA。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.