Jenkins: accesso negato dopo l'attivazione della sicurezza globale. Come ripristinare?


14

Hai bisogno di aiuto per capire questo. Come posso risolvere questo problema? Penso di aver abilitato la sicurezza globale e di aver visto immediatamente questo errore.

(durante l'accesso a localhost: 8080 ottengo il seguente ...)

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)

Risposte:


14

modifica config.xml e sostituisci i seguenti due tag xml con la versione seguente. Quindi riavviare il server.

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

Attenzione, i tag esistenti probabilmente si estendono su più righe ciascuno.


E dove dovrei cercare config.xml?
sobi3ch,

OK l'ho trovato .. normalmente è acceso $JENKINS_HOMEma nel mio caso era vuoto. Sul mio Ubuntu l'ho trovato /var/lib/jenkins/.
sobi3ch,

Mentre una buona risposta a questa domanda, questa risposta è anche un po 'più generica. Se hai rovinato le tue impostazioni di sicurezza (o se l'IT ha modificato LDAP) e devi tornare a un Jenkins bloccato, cancellando la sicurezza in config.xml e aggiungendo i tag xml sopra riprendi.
gnuchu,

11

Questo errore viene visualizzato perché hai abilitato la sicurezza ma non hai utenti con autorizzazioni. Per risolvere questo problema, prima modifica config.xmle imposta useSecuritysufalse

Presumo che tu voglia usare l'autenticazione locale (un db di utenti locale) piuttosto che un db esterno (cioè LDAP). Seguire i passaggi seguenti presi dalla documentazione di Jenkins .

  1. Vai alla schermata Configura sicurezza globale ( http: // server / jenkins / configureSecurity / ) e scegli "abilita sicurezza". Un URL alternativo da provare è http: // server: 8080 / configureSecurity .
  2. Seleziona "Database utenti Jenkins" come dominio di sicurezza
  3. Metti un segno di spunta accanto a "Consenti agli utenti di registrarsi"
  4. Seleziona "Sicurezza basata su matrice" come autorizzazione
  5. Concedi all'utente anonimo l'accesso in lettura
  6. Nella casella di testo sotto la tabella, digita il tuo nome utente (lo creerai in seguito) e fai clic su "aggiungi"
  7. Concediti un accesso completo controllando l'intera riga per il tuo nome utente
  8. Scorri fino in fondo, fai clic su "Salva"

Testato con la versione 1.566.


Suggerisco di ripristinare le modifiche suggerite nella risposta accettata in quanto è probabile che influiscano sui passaggi precedenti.


Cosa fa <useSecurity>false</useSecurity>?
alex

@alex disabilita la sicurezza in Jenkins in modo da poter accedere e riconfigurare. jenkins.io/doc/book/system-administration/security/…
amertkara

2

Correzione a due righe (eseguita sul server):

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

Nota: sudoè richiesta l' autorizzazione o esegui come root.

Quindi accedi a Jenkins come al solito e riconfigura nuovamente la sicurezza.


0

Problema simile che ho riscontrato ma con il plugin GitHub OAuth, grazie alla risposta concordata qui, il mio problema e la soluzione spiegati qui


0

In Windows: quando ho abilitato LDAP in Sicurezza globale, ho perso anche il mio amministratore. con errore come "Accesso negato manca l'autorizzazione generale / lettura jenkins windows".

In tal caso, conservare l'istanza esistente, installare una nuova jenkins su un'altra macchina o VM. Copia config.xml da Jenkins_Home e sostituiscilo con config.xml dalla tua directory Jenkin_Home. Durante l'esecuzione, assicurarsi che il servizio Jenkins sia interrotto. una volta sostituito, avvia l'istanza e VOILA.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.