Jenkins: acesso negado após ativar a segurança global. Como reverter?

14

Precisa de ajuda para descobrir este. Como posso corrigir esse problema? Acho que habilitei a segurança global e vi esse erro imediatamente.

(ao acessar o host local: 8080, recebo o seguinte ...)

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
fonte

Respostas:

14

edite o config.xml e substitua as duas tags xml a seguir pela versão abaixo. Em seguida, reinicie o servidor.

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

Cuidado, suas tags existentes provavelmente estão se estendendo por várias linhas cada.

Peter Schuetze
fonte
E onde devo procurar config.xml?
Sobi3ch
OK, eu encontrei .. normalmente está ativado, $JENKINS_HOMEmas no meu caso estava vazio. No meu Ubuntu eu encontrei /var/lib/jenkins/.
sobi3ch
Embora seja uma boa resposta para essa pergunta, essa resposta também é um pouco mais genérica. Se você estragou suas configurações de segurança (ou a TI mudou o LDAP) e precisa voltar para um Jenkins bloqueado, a eliminação da segurança no config.xml e a adição das tags xml acima farão você voltar.
Gnuchu
11

Você está recebendo este erro porque ativou a segurança, mas não tem nenhum usuário com permissões. Para resolver esse problema, primeiro edite config.xmle defina useSecuritycomofalse

Suponho que você deseja usar a autenticação local (um banco de dados local de usuários) em vez de um banco de dados externo (ou seja, LDAP). Siga as etapas abaixo, retiradas da documentação da Jenkins .

  1. Vá para a tela Configurar segurança global ( http: // server / jenkins / configureSecurity / ) e escolha "ativar segurança". Um URL alternativo para tentar é http: // server: 8080 / configureSecurity .
  2. Selecione "Banco de dados de usuário próprio do Jenkins" como o domínio de segurança
  3. Coloque uma marca de seleção ao lado de "Permitir que os usuários se inscrevam"
  4. Selecione "Segurança baseada em matriz" como a autorização
  5. Conceder ao usuário anônimo o acesso de leitura
  6. Na caixa de texto abaixo da tabela, digite seu nome de usuário (você criaria isso mais tarde) e clique em "adicionar"
  7. Dê a si mesmo um acesso completo, verificando o nome de usuário de toda a linha
  8. Role até o final, clique em "Salvar"

Testado com a versão 1.566.


Sugiro reverter as alterações sugeridas na resposta aceita, pois isso provavelmente afetará as etapas acima.

amertkara
fonte
O que <useSecurity>false</useSecurity>faz?
8289 alex
@alex desativa a segurança no Jenkins, para que você possa efetuar login e reconfigurar. jenkins.io/doc/book/system-administration/security/…
amertkara
2

Correção de duas linhas (executada no servidor):

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

Nota: A sudopermissão é necessária ou execute como root.

Em seguida, faça login no Jenkins como de costume e reconfigure a segurança novamente.

kenorb
fonte
0

Problema semelhante que enfrentei, mas com o plug-in GitHub OAuth, graças à resposta acordada aqui, meu problema e solução explicados aqui

sandejai
fonte
0

No Windows: Quando habilitei o LDAP em Segurança global, também perdi meu administrador. com erro como "Acesso negado ausente nas janelas de permissão geral / leitura de jenkins".

Nesse caso, mantenha a instância existente, instale um novo jenkins em outra máquina ou VM. Copie o config.xml de Jenkins_Home e substitua-o por config.xml do diretório Jenkin_Home. Ao fazer isso, verifique se o serviço Jenkins está parado. uma vez substituído, inicie a instância e VOILA.

user3346620
fonte