Estou executando o Jenkins (atualmente v2.134, sempre atualizado com o repositório Jenkins Debian/Ubuntu) em um servidor Ubuntu 18.04. Ele está configurado para usar o pwauth
plug-in para autenticação em contas do sistema.
Aqui está a seção de configuração do pwauth
plug-in (gerada 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 Matrix, 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, basta adicioná-los 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 reinicio o Jenkins (inclusive automaticamente após a reinicialização do servidor, após uma atualização do Jenkins ou após a alteração de plugins), não consigo mais registrá-lo - o Jenkins me diz "Nome de usuário ou senha inválidos".
No entanto, eu sei que essa configuração realmente funciona, porque eu posso entrar no config.xml
e alterar <useSecurity>
para false
desabilitar todos os requisitos de login (e reiniciar), depois voltar para as configurações e reaplicar essas configurações, e nesse caso ele imediatamente solicita que eu faça login e meu nome de usuário e senha são aceitos!
Verifiquei os logs e não vejo nada relevante.
Também sei que pwauth
está funcionando bem, pois posso fazer login em um shell como usuário do Jenkins e executar pwauth
manualmente e funciona conforme o esperado.
Como posso descobrir por que essa configuração parece funcionar apenas até que o servidor seja reiniciado?
Eu corri para o mesmo problema com o v2.263.4 mais recente. Consegui resolvê-lo criando um link simbólico para pwauth no local esperado padrão: /usr/local/bin/pwauth. Parece que, na reinicialização, o Jenkins procura pwauth no caminho padrão de fábrica em vez do caminho especificado pelo usuário personalizado. Parece um bug.
Eu testei novamente e a partir do Jenkins v2.202, isso está funcionando corretamente. Eu não alterei nenhuma configuração que eu conheça e não vejo nada nos logs de alterações das últimas versões, mas pode ser que tenha havido um bug que foi corrigido acidentalmente.