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