เจนกินส์: เข้าถึงถูกปฏิเสธหลังจากเปิดการรักษาความปลอดภัยทั่วโลก จะเปลี่ยนกลับอย่างไร?


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

ในขณะที่คำตอบที่ดีสำหรับคำถามนี้คำตอบนี้ก็ค่อนข้างกว้างกว่า หากคุณเมาการตั้งค่าความปลอดภัยของคุณ (หรือไอทีเปลี่ยน LDAP) และคุณจำเป็นต้องกลับไปสู่ ​​Jenkins ที่ถูกล็อคการลบการรักษาความปลอดภัยใน config.xml และการเพิ่มแท็ก xml ด้านบนจะทำให้คุณกลับมาทำงานอีกครั้ง
gnuchu

11

คุณได้รับข้อผิดพลาดนี้เนื่องจากคุณเปิดใช้งานความปลอดภัย แต่ไม่มีผู้ใช้ที่มีสิทธิ์ เพื่อแก้ไขปัญหานี้ก่อนอื่นให้แก้ไขconfig.xmlและตั้งค่าuseSecurityเป็นfalse

ฉันคิดว่าคุณต้องการใช้การตรวจสอบท้องถิ่น (ฐานข้อมูลท้องถิ่นของผู้ใช้) มากกว่าฐานข้อมูลภายนอก (เช่น LDAP) ทำตามขั้นตอนดังต่อไปนี้นำมาจากเจนกินส์เอกสาร

  1. ไปที่หน้าจอ Configure Global Security ( http: // server / jenkins / configureSecurity / ) และเลือก "enable security" URL ทางเลือกการพยายามคือhttp: // เซิร์ฟเวอร์: 8080 / configureSecurity
  2. เลือก "ฐานข้อมูลผู้ใช้ของเจนกินส์" เป็นขอบเขตความปลอดภัย
  3. ทำเครื่องหมายที่อยู่ถัดจาก "อนุญาตให้ผู้ใช้ลงชื่อสมัครใช้"
  4. เลือก "ความปลอดภัยบนพื้นฐานของเมทริกซ์" เป็นการอนุญาต
  5. ให้สิทธิ์การเข้าถึงเพื่ออ่านแก่ผู้ใช้นิรนาม
  6. ในช่องข้อความด้านล่างตารางพิมพ์ชื่อผู้ใช้ของคุณ (คุณจะสร้างสิ่งนี้ในภายหลัง) และคลิก "เพิ่ม"
  7. ให้สิทธิ์การเข้าถึงอย่างเต็มที่ด้วยการตรวจสอบชื่อผู้ใช้ของคุณทั้งแถว
  8. เลื่อนไปจนสุดคลิก "บันทึก"

ทดสอบกับรุ่น 1.566


ฉันขอแนะนำให้ยกเลิกการเปลี่ยนแปลงที่เสนอแนะในคำตอบที่ยอมรับเนื่องจากมีแนวโน้มที่จะส่งผลต่อขั้นตอนข้างต้น


อะไร<useSecurity>false</useSecurity>ทำอย่างไร
alex

@alex มันปิดการใช้งานความปลอดภัยใน Jenkins เพื่อให้คุณสามารถเข้าสู่ระบบและกำหนดค่าใหม่ jenkins.io/doc/book/system-administr/security/ …
amertkara

2

แก้ไขสองซับ (ทำงานบนเซิร์ฟเวอร์):

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

หมายเหตุ: จำเป็นต้องขออนุญาตหรือทำงานเป็นsudoroot

จากนั้นลงชื่อเข้าใช้ Jenkins ตามปกติและกำหนดค่าความปลอดภัยอีกครั้ง


0

ปัญหาที่คล้ายกันที่ฉันเผชิญ แต่ด้วยปลั๊กอิน GitHub OAuth ขอบคุณคำตอบที่ตกลงกันที่นี่ปัญหาและวิธีแก้ไขของฉันอธิบาย ที่นี่


0

ใน Windows: เมื่อฉันเปิดใช้งาน LDAP ภายใต้ความปลอดภัยระดับโลกฉันก็สูญเสียผู้ดูแลระบบด้วยเช่นกัน โดยมีข้อผิดพลาดว่า "Access Denied หายไปจากหน้าต่าง jenkins สิทธิ์โดยรวม / อ่าน"

ในกรณีดังกล่าวโปรดรักษาอินสแตนซ์ที่มีอยู่เดิมให้ติดตั้งเจนกินส์ใหม่บนเครื่องอื่นหรือ VM คัดลอก config.xml จาก Jenkins_Home และแทนที่ด้วย config.xml จากไดเร็กทอรี Jenkin_Home ของคุณ ในขณะที่ดำเนินการสิ่งนี้ตรวจสอบให้แน่ใจว่าบริการ Jenkins หยุดทำงาน เมื่อแทนที่แล้วให้เริ่มต้นอินสแตนซ์และ VOILA

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.