Em máquinas Debian antigas, pode-se emitir algo como:
echo '<username>:*'|chpasswd -e
para alterar o campo de senha do usuário ( <username>
) para *
.
Agora estou ciente de
passwd -d <username> && passwd -l <username>
para obter um efeito semelhante e definir o campo de senha como !
. No entanto, em algumas configurações mais recentes do Ubuntu (em particular 10.04 LTS) isso leva o usuário a não conseguir mais entrar na máquina (por exemplo, via SSH e chave) - com: Your account has expired; please contact your system administrator.
- mesmo que passwd(1)
"avise "que isso é possível.
Agora, é exatamente isso que quero alcançar. Alterar manualmente o campo no arquivo /etc/shadow
de !
para *
corrige o problema, mas parece não haver nenhuma maneira de fazer o mesmo sem precisar manipular diretamente o arquivo shadow
(por exemplo, com sed
) . chpasswd -e
costumava ser uma alternativa conveniente, mas isso obviamente foi removido.
Então, o que estou procurando é uma variação de passwd -l
que me permite escolher o token que é gravado no arquivo ou qualquer outro tipo de substituição para a funcionalidade exata que chpasswd -e
oferecido.
NB: *
já é usado para contas do sistema, e parece haver uma diferença semântica no PAM ou entre o!
e o *
no campo de senha.
Observe também: no Debian 5 e 6 chpasswd -e
works. Portanto, a funcionalidade deve ter sido removida deliberadamente no Ubuntu. Eu testei o Ubuntu 9.10, 10.04 (eles não têm), 11.04 e 11.10 têm chpasswd -e
.