Jenkins: Zugriff verweigert, nachdem die globale Sicherheit aktiviert wurde. Wie kann ich zurückkehren?

14

Brauchen Sie Hilfe, um dies herauszufinden. Wie kann ich dieses Problem beheben? Ich glaube, ich habe die globale Sicherheit aktiviert und diesen Fehler sofort erkannt.

(Beim Zugriff auf localhost: 8080 erhalte ich Folgendes ...)

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)
serverFaulter
quelle

Antworten:

14

Bearbeiten Sie die Datei config.xml, und ersetzen Sie die folgenden beiden XML-Tags durch die folgende Version. Starten Sie dann Ihren Server neu.

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

Beachten Sie, dass sich Ihre vorhandenen Tags wahrscheinlich über mehrere Zeilen erstrecken.

Peter Schütze
quelle
Und wo soll ich suchen config.xml?
sobi3ch
OK, ich habe es gefunden. Normalerweise ist es eingeschaltet, $JENKINS_HOMEaber in meinem Fall war es leer. Auf meinem Ubuntu fand ich es in /var/lib/jenkins/.
sobi3ch
Diese Frage ist zwar eine gute Antwort, aber auch etwas allgemeiner. Wenn Sie Ihre Sicherheitseinstellungen verkorkst haben (oder wenn die IT das LDAP geändert hat) und Sie wieder in einen gesperrten Jenkins wechseln müssen, können Sie die Sicherheit in config.xml löschen und die obigen xml-Tags hinzufügen.
Gnuchu
11

Sie erhalten diesen Fehler, weil Sie die Sicherheit aktiviert haben, aber keinen Benutzer mit Berechtigungen haben. Um dieses Problem zu lösen, bearbeiten Sie zuerst config.xmlund stellen Sie useSecurityauffalse

Ich gehe davon aus, dass Sie die lokale Authentifizierung (eine lokale Datenbank von Benutzern) anstelle einer externen Datenbank (dh LDAP) verwenden möchten. Befolgen Sie die nachstehenden Schritte aus der Jenkins-Dokumentation .

  1. Gehen Sie zum Bildschirm Configure Global Security ( http: // server / jenkins / configureSecurity / ) und wählen Sie "enable security". Eine alternative URL ist http: // server: 8080 / configureSecurity .
  2. Wählen Sie "Jenkins eigene Benutzerdatenbank" als Sicherheitsbereich
  3. Setzen Sie ein Häkchen neben "Benutzern erlauben, sich anzumelden"
  4. Wählen Sie als Autorisierung "Matrixbasierte Sicherheit"
  5. Gewähren Sie anonymen Benutzern den Lesezugriff
  6. Geben Sie in das Textfeld unter der Tabelle Ihren Benutzernamen ein (diesen erstellen Sie später) und klicken Sie auf "Hinzufügen".
  7. Gönnen Sie sich vollständigen Zugriff, indem Sie in der gesamten Zeile nach Ihrem Benutzernamen suchen
  8. Scrollen Sie ganz nach unten und klicken Sie auf "Speichern"

Getestet mit Version 1.566.


Ich schlage vor, die in der akzeptierten Antwort vorgeschlagenen Änderungen rückgängig zu machen, da dies wahrscheinlich die obigen Schritte beeinflusst.

Amertkara
quelle
Was macht <useSecurity>false</useSecurity>das?
alex
@alex deaktiviert die Sicherheit in Jenkins, sodass Sie sich anmelden und neu konfigurieren können. jenkins.io/doc/book/system-administration/security/…
amertkara
2

Two-Liner-Fix (auf dem Server ausführen):

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

Hinweis: Die sudoBerechtigung ist erforderlich oder wird ausgeführt als root.

Melden Sie sich dann wie gewohnt bei Jenkins an und konfigurieren Sie die Sicherheit erneut.

Kenorb
quelle
0

Ähnliches Problem hatte ich aber mit GitHub OAuth Plugin zu kämpfen, dank der hier vereinbarten Antwort wurde mein Problem und meine Lösung hier erklärt

Sandejai
quelle
0

In Windows: Wenn ich LDAP unter Globale Sicherheit aktiviert habe, habe ich auch mein Administratorrecht verloren. mit dem Fehler "Zugriff verweigert fehlt die Berechtigung" Overall / Read jenkins windows "".

Behalten Sie in diesem Fall die vorhandene Instanz bei und installieren Sie einen neuen Jenkin auf einem anderen Computer oder einer anderen VM. Kopieren Sie die Datei config.xml von Jenkins_Home und ersetzen Sie sie durch die Datei config.xml aus Ihrem Jenkin_Home-Verzeichnis. Stellen Sie dabei sicher, dass der Jenkins-Dienst gestoppt ist. Sobald ersetzt, starten Sie die Instanz und VOILA.

user3346620
quelle