Estou executando o Jenkins (atualmente v2.134, sempre atualizado do repositório Jenkins Debian / Ubuntu) em um servidor Ubuntu 18.04. Ele está configurado para usar o plug-in pwauth
para autenticação em contas do sistema.
Aqui está a seção de configuração para o plugin pwauth
(gerado a partir da alteração das configurações na GUI):
<securityRealm class="hudson.plugins.pwauth.PWauthSecurityRealm" plugin="[email protected]">
<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>
Ele está usando a estratégia de autorização de matriz, com um grupo chamado jenkinsadmins
com permissões completas (a configuração abaixo também é gerada a partir da alteração das configurações na GUI). Para permitir que os usuários façam login no Jenkins, nós apenas os adicionamos a este grupo 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>
O problema é que toda vez que eu reinicio o Jenkins (incluindo automaticamente após uma reinicialização do servidor, depois de uma atualização do Jenkins, ou depois de trocar plugins), eu não consigo mais logar - Jenkins me diz "Nome de usuário ou senha inválidos".
No entanto, sei que essa configuração realmente funciona, porque posso ir em config.xml
e alterar <useSecurity>
para false
para desabilitar todos os requisitos de login (e reiniciar), depois voltar para as configurações e reaplicar essas configurações configurações, caso em que imediatamente me pede para entrar e meu nome de usuário e senha são aceitos!
Eu verifiquei os logs e não vejo nada relevante.
Eu também sei que pwauth
está funcionando bem, já que eu posso fazer login em um shell como o usuário Jenkins e executar pwauth
manualmente e ele funciona como esperado.
Como posso descobrir por que essa configuração parece funcionar apenas até o servidor ser reiniciado?
Tags authentication jenkins