Jenkins: Küresel güvenliği açtıktan sonra erişim reddedildi. Nasıl geri alınır?


14

Bunu anlamak için yardıma ihtiyacım var. Bu sorunu nasıl düzeltebilirim? Küresel güvenliği etkinleştirdim ve bu hatayı hemen gördüm.

(localhost'a erişirken: 8080 Aşağıdakileri alıyorum ...)

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)

Yanıtlar:


14

config.xml dosyasını düzenleyin ve aşağıdaki iki xml etiketini aşağıdaki sürümle değiştirin. Ardından sunucunuzu yeniden başlatın.

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

Mevcut etiketlerinizin muhtemelen her biri birkaç satıra yayıldığını unutmayın.


Nereye bakmalıyım config.xml?
sobi3ch

Tamam buldum .. normalde açık $JENKINS_HOMEama benim durumumda boştu. Ubuntu'mda buldum /var/lib/jenkins/.
sobi3ch

Bu soru için iyi bir cevap olsa da, bu cevap biraz daha geneldir. Güvenlik ayarlarınızı bozduysanız (veya BT LDAP'ı değiştirdiyseniz) ve kilitli bir Jenkins'e geri dönmeniz gerekiyorsa, config.xml dosyasındaki güvenliği silmeniz ve yukarıdaki xml etiketlerini eklemeniz tekrar devam etmenizi sağlar.
gnuchu

11

Güvenliği etkinleştirdiğiniz, ancak izinleri olan bir kullanıcınız olmadığı için bu hatayı alıyorsunuz. Bu sorunu, ilk düzenlemeyi çözmek için config.xmlve set useSecurityiçinfalse

Harici bir db (yani, LDAP) yerine yerel kimlik doğrulama (kullanıcıların yerel bir db) kullanmak istediğinizi varsayalım. Jenkins Belgeleri'nden aşağıdaki adımları izleyin .

  1. Global Güvenliği Yapılandır ekranına gidin ( http: // server / jenkins / configureSecurity / ) ve "güvenliği etkinleştir" i seçin. Denenecek alternatif bir URL http: // sunucu: 8080 / configureSecurity'dir .
  2. Güvenlik alanı olarak "Jenkins'in kendi kullanıcı veritabanı" nı seçin
  3. "Kullanıcıların kaydolmasına izin ver" in yanına bir onay işareti koyun
  4. Yetkilendirme olarak "Matris tabanlı güvenlik" i seçin
  5. Anonim kullanıcıya okuma erişimi verin
  6. Tablonun altındaki metin kutusuna kullanıcı adınızı yazın (bunu daha sonra oluşturacaksınız) ve "ekle" yi tıklayın
  7. Kullanıcı adınız için tüm satırı kontrol ederek kendinize tam erişim verin
  8. En alta kadar kaydırın, "kaydet" i tıklayın

1.566 sürümü ile test edilmiştir.


Yukarıdaki adımları etkilemesi muhtemel olduğundan, kabul edilen yanıtta önerilen değişiklikleri geri almanızı öneririm.


Ne yapar <useSecurity>false</useSecurity>?
alex

@alex, oturum açıp yeniden yapılandırabilmeniz için Jenkins'teki güvenliği devre dışı bırakır. jenkins.io/doc/book/system-administration/security/…
amertkara

2

İki astarlı düzeltme (sunucuda çalıştırın):

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

Not: sudoİzin gereklidir veya olarak çalıştırın root.

Ardından Jenkins'e her zamanki gibi giriş yapın ve güvenliği yeniden yapılandırın.


0

Benzer bir sorunla karşı karşıya kaldım ama GitHub OAuth eklentisiyle, burada kabul edilen cevap sayesinde, sorunum ve çözümüm burada açıklandı


0

Windows'da: Global güvenlik altında LDAP'yi etkinleştirdiğimde, yöneticimi de kaybettim. "Erişim Reddedildi Genel / Okuma izni jenkins pencereleri eksik" hatasıyla.

Bu durumda, lütfen mevcut örneği saklayın, başka bir makineye veya VM'ye yeni bir cenkins yükleyin. Config.xml dosyasını Jenkins_Home dizininden kopyalayın ve Jenkin_Home dizininizden config.xml ile değiştirin. Bunu yaparken Jenkins hizmetinin durdurulduğundan emin olun. değiştirildikten sonra, örneği ve VOILA'yı başlatın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.