Дженкинс: Доступ запрещен после включения глобальной безопасности. Как вернуть?


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), и вам нужно вернуться в заблокированный Jenkins, стирание безопасности в config.xml и добавление вышеупомянутых тегов xml поможет вам снова.
gnuchu

11

Вы получаете эту ошибку, потому что вы включили защиту, но у вас нет пользователя с разрешениями. Чтобы решить эту проблему, сначала измените config.xmlи набор useSecurityдляfalse

Я предполагаю, что вы хотите использовать локальную аутентификацию (локальную базу данных пользователей), а не внешнюю базу данных (т. Е. LDAP). Следуйте инструкциям ниже, взятым из документации Jenkins .

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

Протестировано с версией 1.566.


Я предлагаю отменить изменения, предложенные в принятом ответе, поскольку это может повлиять на действия, описанные выше.


Что делает <useSecurity>false</useSecurity>?
Алекс

@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

С подобной проблемой я столкнулся, но с плагином GitHub OAuth, благодаря согласованному ответу здесь, моя проблема и решение объяснены здесь


0

В Windows: когда я включил LDAP в разделе Глобальная безопасность, я тоже потерял права администратора. с ошибкой «Отказано в доступе отсутствует окно Дженкинс разрешения Полное / чтение».

В таком случае, пожалуйста, сохраните существующий экземпляр, установите новую версию jenkins на другой машине или виртуальной машине. Скопируйте файл config.xml из Jenkins_Home и замените его на config.xml из своего каталога Jenkin_Home. При выполнении этого убедитесь, что служба Jenkins остановлена. После замены запустите экземпляр и VOILA.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.