Você pode tentar printf "%s\n" 'username:encryptedpassword' | sudo chpasswd -e
- que pode ser capaz de ignorar a verificação de senha imposta pelo PAM.
A senha deve ser pré-criptografada, por exemplo, como no exemplo mkpasswd
por muru. Por exemplo:
p=$(mkpasswd -m sha-512 'mysupersekretpassword')
printf "%s:%s\n" 'username' "$p" | sudo chpasswd -e
Estou usando printf
aqui, em vez de echo
, porque echo
interpretará e alterará a saída para algumas sequências de caracteres que podem ocorrer na senha criptografada, por exemplo, \t
, \n
, \nnn
(octal de 3 dígitos) e outros.
Lembre-se de excluir o comando mkpasswd
do seu .bash_history
. Ou use export HISTCONTROL=ignorespace
e prefixe o comando p=$(...)
com um espaço para que ele nunca seja armazenado no histórico. Se você não estiver usando o bash, use o método que for apropriado para o seu shell.