Назад | Перейти на главную страницу

Jenkins PWAuth не работает после перезапуска процесса

Я использую Jenkins (в настоящее время v2.134, всегда в актуальном состоянии из репозитория Jenkins Debian / Ubuntu) на сервере Ubuntu 18.04. Он настроен на использование pwauth плагин для аутентификации по системным учетным записям.

Вот раздел конфигурации для pwauth плагин (создается при изменении настроек в графическом интерфейсе):

  <securityRealm class="hudson.plugins.pwauth.PWauthSecurityRealm" plugin="pwauth@0.4">
    <pwauthPath>/usr/sbin/pwauth</pwauthPath>
    <whitelist></whitelist>
    <enableParamAuth>false</enableParamAuth>
    <idPath>/usr/bin/id</idPath>
    <groupsPath>/usr/bin/groups</groupsPath>
    <catPath>/bin/cat</catPath>
    <grepPath>/bin/grep</grepPath>
  </securityRealm>

Он использует стратегию матричной авторизации с группой с именем jenkinsadmins с полными разрешениями (конфигурация ниже также генерируется в результате изменения настроек в графическом интерфейсе). Чтобы пользователи могли входить в Jenkins, мы просто добавляем их в эту группу Unix:

  <authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">
    <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Create:jenkinsadmins</permission>
    <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Delete:jenkinsadmins</permission>
    <permission>com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains:jenkinsadmins</permission>
    <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Update:jenkinsadmins</permission>
    <permission>com.cloudbees.plugins.credentials.CredentialsProvider.View:jenkinsadmins</permission>
    <permission>hudson.model.Computer.Build:jenkinsadmins</permission>
    <permission>hudson.model.Computer.Configure:jenkinsadmins</permission>
    <permission>hudson.model.Computer.Connect:jenkinsadmins</permission>
    <permission>hudson.model.Computer.Create:jenkinsadmins</permission>
    <permission>hudson.model.Computer.Delete:jenkinsadmins</permission>
    <permission>hudson.model.Computer.Disconnect:jenkinsadmins</permission>
    <permission>hudson.model.Hudson.Administer:jenkinsadmins</permission>
    <permission>hudson.model.Hudson.Read:jenkinsadmins</permission>
    <permission>hudson.model.Item.Build:jenkinsadmins</permission>
    <permission>hudson.model.Item.Cancel:jenkinsadmins</permission>
    <permission>hudson.model.Item.Configure:jenkinsadmins</permission>
    <permission>hudson.model.Item.Create:jenkinsadmins</permission>
    <permission>hudson.model.Item.Delete:jenkinsadmins</permission>
    <permission>hudson.model.Item.Discover:jenkinsadmins</permission>
    <permission>hudson.model.Item.Move:jenkinsadmins</permission>
    <permission>hudson.model.Item.Read:jenkinsadmins</permission>
    <permission>hudson.model.Item.ViewStatus:anonymous</permission>
    <permission>hudson.model.Item.ViewStatus:jenkinsadmins</permission>
    <permission>hudson.model.Item.Workspace:jenkinsadmins</permission>
    <permission>hudson.model.Run.Delete:jenkinsadmins</permission>
    <permission>hudson.model.Run.Update:jenkinsadmins</permission>
    <permission>hudson.model.View.Configure:jenkinsadmins</permission>
    <permission>hudson.model.View.Create:jenkinsadmins</permission>
    <permission>hudson.model.View.Delete:jenkinsadmins</permission>
    <permission>hudson.model.View.Read:jenkinsadmins</permission>
    <permission>hudson.scm.SCM.Tag:jenkinsadmins</permission>
    <permission>org.jenkins.ci.plugins.jobimport.JobImportAction.JobImport:jenkinsadmins</permission>
  </authorizationStrategy>

Проблема в том, что каждый раз, когда я перезапускаю Jenkins (в том числе автоматически после перезагрузки сервера, после обновления Jenkins или после смены плагинов), я больше не могу регистрировать его - Дженкинс сообщает мне «Неверное имя пользователя или пароль».

Однако я знаю, что эта конфигурация действительно работает, потому что могу войти в config.xml и изменить <useSecurity> к false чтобы отключить все требования для входа в систему (и перезапустить), затем вернитесь к настройкам и повторно примените эти настройки, и в этом случае он сразу же предложит мне войти в систему, и мое имя пользователя и пароль будут приняты!

Я проверил логи и не нашел ничего подходящего.

Я также знаю что pwauth сам работает нормально, так как я могу войти в оболочку как пользователь Jenkins и запустить pwauth вручную, и все работает как положено.

Как я могу понять, почему эта конфигурация работает только до перезапуска сервера?

Я снова протестировал, и начиная с Jenkins v2.202, он работает правильно. Я не менял никаких настроек, о которых я знаю, и я ничего не вижу в журналах изменений последних нескольких версий, но, возможно, произошла ошибка, которая была случайно исправлена.