Jenkins: Diakses ditolak setelah menyalakan keamanan global. Bagaimana cara mengembalikan?

14

Perlu bantuan mencari yang satu ini. Bagaimana saya bisa memperbaiki masalah ini? Saya pikir saya mengaktifkan keamanan global dan segera melihat kesalahan ini.

(saat mengakses localhost: 8080 saya mendapatkan yang berikut ...)

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
sumber

Jawaban:

14

edit config.xml dan ganti dua tag xml berikut dengan versi di bawah ini. Kemudian restart server Anda.

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

Hati-hati, tag Anda yang ada mungkin masing-masing menjangkau beberapa baris.

Peter Schuetze
sumber
Dan di mana saya harus mencari config.xml?
sobi3ch
OK saya menemukannya .. biasanya sudah diaktifkan $JENKINS_HOMEtetapi dalam kasus saya itu kosong. Di Ubuntu saya, saya menemukannya di /var/lib/jenkins/.
sobi3ch
Sementara jawaban yang bagus untuk pertanyaan ini, jawaban ini juga sedikit lebih umum. Jika Anda telah mengacaukan pengaturan keamanan Anda (atau IT telah mengubah LDAP) dan Anda perlu kembali ke Jenkins yang terkunci, menghapus keamanan di config.xml dan menambahkan tag xml di atas akan membuat Anda melanjutkan lagi.
gnuchu
11

Anda mendapatkan kesalahan ini karena Anda mengaktifkan keamanan tetapi tidak memiliki pengguna dengan izin. Untuk mengatasi masalah ini, edit config.xmldan atur terlebih dahulu useSecuritykefalse

Saya berasumsi bahwa Anda ingin menggunakan otentikasi lokal (db pengguna lokal) daripada db eksternal (yaitu, LDAP). Ikuti langkah-langkah di bawah ini yang diambil dari Dokumentasi Jenkins .

  1. Buka layar Konfigurasi Keamanan Global ( http: // server / jenkins / configureSecurity / ) dan pilih "aktifkan keamanan". URL alternatif untuk dicoba adalah http: // server: 8080 / configureSecurity .
  2. Pilih "database pengguna Jenkins sendiri" sebagai bidang keamanan
  3. Tempatkan tanda centang di sebelah "Izinkan pengguna mendaftar"
  4. Pilih "Keamanan berbasis matriks" sebagai otorisasi
  5. Berikan pengguna anonim akses baca
  6. Di kotak teks di bawah tabel, ketikkan nama pengguna Anda (Anda akan membuatnya nanti) dan klik "tambah"
  7. Berikan diri Anda akses penuh dengan memeriksa seluruh baris untuk nama pengguna Anda
  8. Gulir ke bawah, klik "simpan"

Diuji dengan versi 1.566.


Saya menyarankan untuk mengembalikan perubahan yang disarankan dalam jawaban yang diterima karena kemungkinan akan mempengaruhi langkah-langkah di atas.

amertkara
sumber
Apa yang <useSecurity>false</useSecurity>harus dilakukan
alex
@alex menonaktifkan keamanan di Jenkins sehingga Anda dapat masuk dan mengkonfigurasi ulang. jenkins.io/doc/book/system-administration/security/…
amertkara
2

Perbaikan dua baris (dijalankan di server):

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

Catatan: sudoIzin diperlukan, atau dijalankan sebagai root.

Kemudian login ke Jenkins seperti biasa dan konfigurasi ulang keamanannya lagi.

kenorb
sumber
0

Masalah serupa yang saya hadapi tetapi dengan plugin GitHub OAuth, terima kasih atas jawaban yang disepakati di sini, masalah dan solusi saya dijelaskan di sini

sandejai
sumber
0

Di Windows: Ketika saya mengaktifkan LDAP di bawah Keamanan global, saya juga kehilangan admin saya. dengan kesalahan sebagai "Akses Ditolak hilang keseluruhan / Baca izin jenkins windows".

Dalam kasus seperti itu, Silakan simpan instance yang ada, minta jenkins baru diinstal pada mesin lain atau VM. Salin config.xml dari Jenkins_Home dan ganti dengan config.xml dari direktori Jenkin_Home Anda. Saat melakukan ini, pastikan layanan Jenkins dihentikan. setelah diganti, Mulai instance dan VOILA.

pengguna3346620
sumber