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)

답변:


14

config.xml을 편집하고 다음 두 xml 태그를 아래 버전으로 바꾸십시오. 그런 다음 서버를 다시 시작하십시오.

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

기존 태그가 여러 줄에 걸쳐있을 수 있습니다.


어디에서 찾아야 config.xml합니까?
sobi3ch

알았어요 .. 보통 켜져 $JENKINS_HOME있지만 제 경우에는 비어있었습니다. 내 우분투에서 나는 그것을 발견했다 /var/lib/jenkins/.
sobi3ch

이 질문에 대한 정답이지만이 답변도 좀 더 일반적입니다. 보안 설정을 망쳐 놓았거나 IT가 LDAP를 변경 한 경우 잠긴 Jenkins로 다시 돌아 가야하는 경우 config.xml의 보안을 지우고 위의 xml 태그를 추가하면 다시 시작할 수 있습니다.
gnuchu

11

보안을 활성화했지만 권한이있는 사용자가 없기 때문에이 오류가 발생합니다. 이 문제를 처음 편집 해결하기 config.xml및 설정 useSecurity에를false

외부 DB (즉, LDAP) 대신 로컬 인증 (로컬 사용자 DB)을 사용한다고 가정합니다. Jenkins Documentation 에서 가져온 아래 단계를 따르십시오 .

  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

Windows의 경우 : 글로벌 보안에서 LDAP를 활성화하면 관리자도 잃어 버렸습니다. "액세스가 거부되었습니다. 전체 / 읽기 권한 jenkins 창이 없습니다"라는 오류가 표시됩니다.

이 경우 기존 인스턴스를 유지하고 다른 머신 또는 VM에 새 jenkins를 설치하십시오. Jenkins_Home에서 config.xml을 복사하여 Jenkin_Home 디렉토리의 config.xml로 바꾸십시오. 이를 수행하는 동안 Jenkins 서비스가 중지되었는지 확인하십시오. 일단 교체되면 인스턴스와 VOILA를 시작하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.