De acordo com login.conf (5)
, o período de carência padrão para uma senha expirada ("morta") é 0. A menos que esse valor seja definido em /etc/login.conf
, um usuário não poderá efetuar login para alterar sua senha se a data atual do sistema for maior que o sexto campo da entrada de senha de um usuário em /etc/master.passwd
- consulte passwd (5)
.
Para resolver o problema, você precisará especificar uma data formatada em número de segundos desde a época que está dentro do período de carência escolhido. 2 semanas, que você também configurará em /etc/login.conf
. Para escolher manualmente um prazo de expiração da senha de ontem, podemos usar:
# date -d yesterday +%s
1463597700
Em seguida, conecte esse valor ao campo nº 6 em /etc/master.passwd
usando vipw
. A linha relevante será semelhante a esta:
user:$2b$08$01234567890abcdef:1000:1000::1463597700:0:user:/home/user:/bin/ksh
A execução de usermod como você indicou ( usermod -f "May 17 2016" user
) fará essencialmente a mesma coisa, mas em ambos os casos /etc/login.conf
também deve ser alterado anexando o seguinte à default:\
ou seção relevante para sua classe de usuário:
:password-dead=2w:\
:password-warn=2w:
A primeira linha permite um período de carência de duas semanas para o usuário alterar sua senha; a segunda linha emitirá avisos de que a senha de um usuário está programada para expirar. Se expirar, seus usuários verão algo como o seguinte:
WARNING: Your password has expired.
You must change your password now and login again!
Changing local password for user.
Old password:
New password:
Retype new password:
Connection to openbsd-server closed.
Você também pode configurar :passwordtime=7776000:
em /etc/login.conf
para impor uma alteração de senha adicional a cada 90 dias.
Observe que, se você precisar de verificações adicionais na complexidade das senhas dos usuários, como proibir a reutilização de senhas, instale e configure o passwordqc
dos pacotes ou outro programa verificador de senhas.