Em uma nova instalação do Arch Linux, estou tentando exigir que o usuário altere a senha no primeiro login. Expiro a senha usando passwd --expire username
, mas o usuário não pode mais fazer login. Esta mensagem é mostrada:
You are required to change your password immediately (administrator enforced)
Authentication token manipulation error
Após alguns segundos, ele retorna ao prompt de login.
O que causa esse erro, pode ser corrigido para permitir que o usuário altere a senha?
Eu obtenho o mesmo comportamento se defino uma senha ou excluo a senha com passwd --delete
.
Eu estava curioso sobre esse comportamento, então testei na minha máquina.
Reprodução
Eu crio um novo usuário
Eu crio uma senha fictícia para ele
Teste o que fiz até agora em outro terminal
De volta ao meu terminal raiz, tento fazer o que você fez ...
De volta ao meu terminal normal, tento me conectar com o novo usuário.
Interessante, entendo o mesmo que você.
descascar
Então eu estava curioso, então eu olhei para o manual
E curiosamente diz:
Concluí que é estranho que o comportamento descrito não esteja funcionando...
Então, como sei que
pam.d
é o responsável pelo login, procurei no diário.No log, vi o seguinte.
Obs: Conforme eu logo com
su
osu-l
é o serviço que é utilizado.Isso significa que
pam.d
funciona corretamente, mas não lida com a alteração da senha.Mas não fiquei convencido, então testei com SSH (deixo para vocês a configuração do SSH) e funcionou.
Eu me perguntei, onde está a diferença?
O que descobri é que o
/etc/pam.d/sshd
arquivo tem essa linhaEntão, como meu serviço era
su-l
, adicionei essa linha a/etc/pam.d/su-l
Em seguida, tentei novamente.
E funcionou!
Conclusão
Se você adicionar a seguinte linha em
/etc/pam.d/login
,/etc/pam.d/su-l
ou outra configuração dependendo do serviço que você usa. O usuário poderá alterar sua senha no próximo login.Recomendação (Editar 1)
Em minha análise, passei por isso, mas depois de analisar profundamente, tenho que admitir que, mesmo que
system-remote-login
esteja funcionando, devemos evitá-lo porque na verdade foi pensado para SSH.Portanto, recomendo a qualquer pessoa que atenda a esse problema que adicione a seguinte linha (em vez disso) em
/etc/pam.d/login
,/etc/pam.d/su-l
ou outra configuração, dependendo do serviço que você usa.