Дженкінс: Після ввімкнення глобальної безпеки в доступі відмовлено. Як повернути?


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але в моєму випадку він був порожнім. У моєму Ubuntu я знайшов його /var/lib/jenkins/.
sobi3ch

Хоча гарна відповідь на це питання, ця відповідь також є трохи більш загальною. Якщо ви накрутили свої налаштування безпеки (або ІТ змінили LDAP), і вам потрібно повернутися до заблокованого Дженкінса, витираючи захист у config.xml та додаючи до вищевказаних тегів xml, ви знов перейдете.
гнучу

11

Ви отримуєте цю помилку, оскільки ви ввімкнули захист, але не маєте жодного користувача з дозволами. Щоб вирішити цю проблему, спочатку змініть config.xmlі набір useSecurityдляfalse

Я припускаю, що ви хочете використовувати локальну автентифікацію (локальний db користувачів), а не зовнішній db (тобто, LDAP). Виконайте наведені нижче кроки, взяті з документації Дженкінса .

  1. Перейдіть на екран Налаштувати глобальну безпеку ( http: // server / jenkins / configureSecurity / ) і виберіть "включити безпеку". Альтернативна URL-адреса, яку слід спробувати, - http: // server: 8080 / configureSecurity .
  2. Виберіть "власну базу даних користувачів Дженкінса" як сферу безпеки
  3. Поставте прапорець біля пункту "Дозволити користувачам підписуватися"
  4. Виберіть "Захист на основі матриці" як авторизацію
  5. Надати анонімному користувачеві доступ для читання
  6. У текстовому полі під таблицею введіть своє ім’я користувача (ви створили б це пізніше) та натисніть «додати»
  7. Надайте собі повний доступ, перевіривши весь рядок на своє ім’я користувача
  8. Прокрутіть до кінця, натисніть «зберегти»

Тестовано з версією 1.566.


Я пропоную скасувати зміни, запропоновані у прийнятій відповіді, оскільки це, ймовірно, вплине на вищезазначені кроки.


Що робить <useSecurity>false</useSecurity>?
Алекс

@alex він вимикає безпеку в Дженкінсі, так що ви можете ввійти та налаштувати. 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.

Потім увійдіть до Дженкінса, як завжди, і знову налаштуйте безпеку.


0

З подібною проблемою я стикався, але з плагіном GitHub OAuth, завдяки узгодженій відповіді тут, моя проблема та рішення пояснено тут


0

У Windows: Коли я ввімкнув LDAP під глобальною безпекою, я також втратив право адміністратора. з помилкою, оскільки у "Відмовленому доступі відсутнє загальне / читання дозволу jenkins windows".

У такому випадку, будь ласка, збережіть наявний екземпляр, встановіть нові джинкіни на іншу машину або VM. Скопіюйте config.xml з Jenkins_Home та замініть його config.xml зі свого каталогу Jenkin_Home. Виконуючи це, переконайтеся, що послуга Дженкінса припинена. після заміни, запустіть екземпляр та VOILA.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.