Jenkins: Acceso denegado después de activar la seguridad global. ¿Cómo revertir?

14

Necesito ayuda para resolver esto. ¿Cómo puedo solucionar este problema? Creo que habilité la seguridad global y vi este error de inmediato.

(Al acceder a localhost: 8080 obtengo lo siguiente ...)

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
fuente

Respuestas:

14

edite config.xml y reemplace las siguientes dos etiquetas xml con la versión siguiente. Luego reinicie su servidor.

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

Tenga cuidado, sus etiquetas existentes probablemente abarquen varias líneas cada una.

Peter Schuetze
fuente
¿Y dónde debo buscar config.xml?
sobi3ch
OK, lo encontré ... normalmente está activado $JENKINS_HOMEpero en mi caso estaba vacío. En mi Ubuntu lo encontré en /var/lib/jenkins/.
sobi3ch
Si bien es una buena respuesta para esta pregunta, esta respuesta también es un poco más genérica. Si ha arruinado su configuración de seguridad (o TI ha cambiado el LDAP) y necesita volver a un Jenkins bloqueado, eliminar la seguridad en config.xml y agregar las etiquetas xml anteriores lo pondrá en marcha nuevamente.
gnuchu
11

Recibe este error porque habilitó la seguridad pero no tiene ningún usuario con permisos. Para resolver este problema, primero de edición config.xmly un conjunto useSecuritydefalse

Supongo que desea utilizar la autenticación local (una base de datos local de usuarios) en lugar de una base de datos externa (es decir, LDAP). Siga los pasos a continuación tomados de la documentación de Jenkins .

  1. Vaya a la pantalla Configurar seguridad global ( http: // server / jenkins / configureSecurity / ) y elija "habilitar seguridad". Una URL alternativa para probar es http: // server: 8080 / configureSecurity .
  2. Seleccione "la propia base de datos de usuarios de Jenkins" como reino de seguridad
  3. Coloque una marca de verificación junto a "Permitir que los usuarios se registren"
  4. Seleccione "Seguridad basada en matriz" como autorización
  5. Dar al usuario anónimo el acceso de lectura
  6. En el cuadro de texto debajo de la tabla, escriba su nombre de usuario (lo creará más adelante) y haga clic en "Agregar"
  7. Dése un acceso completo marcando la fila completa para su nombre de usuario
  8. Desplácese hasta el final, haga clic en "guardar"

Probado con la versión 1.566.


Sugiero revertir los cambios sugeridos en la respuesta aceptada, ya que es probable que afecte los pasos anteriores.

amertkara
fuente
¿Qué <useSecurity>false</useSecurity>hacer?
alex
@alex deshabilita la seguridad en Jenkins para que pueda iniciar sesión y reconfigurar. jenkins.io/doc/book/system-administration/security/…
amertkara
2

Corrección de dos líneas (se ejecuta en el servidor):

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

Nota: Se sudorequiere el permiso, o ejecutar como root.

Luego, inicie sesión en Jenkins como de costumbre y vuelva a configurar la seguridad nuevamente.

kenorb
fuente
0

Problema similar al que me enfrenté pero con el complemento GitHub OAuth, gracias a la respuesta acordada aquí, mi problema y la solución explicados aquí

sandejai
fuente
0

En Windows: cuando habilité el LDAP en Seguridad global, también perdí mi administrador. con error como "Acceso denegado falta la ventana de jenkins Permiso general / lectura".

En tal caso, conserve la instancia existente, haga que se instale un nuevo jenkins en otra máquina o máquina virtual. Copie config.xml de Jenkins_Home y reemplácelo con config.xml de su directorio Jenkin_Home. Mientras realiza esto, asegúrese de detener el servicio Jenkins. una vez reemplazado, inicie la instancia y VOILA.

usuario3346620
fuente