A resposta padrão para problemas envolvendo a entrada interativa de senhas é usar esperar que seja executado o comando - passwd neste caso.
Estamos tentando padronizar em passwd
para alterar nossas senhas * nix. No linux, é uma simples questão:
printf "secret\nsecret\n" | passwd username
Mas o FreeBSD reescreveu sua versão de passwd
para usar o pam
biblioteca. O sistema pam
usa openpam_ttyconv para ler a senha,
que salta através de alguns aros para derrotar as tentativas de um administrador para
redirecionar stdin.
Se você tentar a receita acima no FreeBSD, ela continuará solicitando e aguardando uma resposta interativa. Se você tentar forçar e forçar o redirecionamento de stdin, obterá um pam_chauthtok: conversation failure
Eu entendo no FreeBSD que podemos usar
printf "secret\nsecret\n | pw usermod -n username -h0
Mas eu estava esperando (talvez sonhando) que alguém pudesse conhecer um truque para obter a biblioteca pam para aceitar o redirecionamento de stdin?
A resposta padrão para problemas envolvendo a entrada interativa de senhas é usar esperar que seja executado o comando - passwd neste caso.
Você pode usar chpass
para alterar uma senha de um script no * BSD, e o utilitário similar chpasswd
no Linux. Ambos permitem que você defina a senha "criptografada" de uma conta. Na verdade, o hash de senha . Você pode chamar a função crypt
de um script Perl ou Python para calcular o hash (não esqueça de selecionar uma função hash, um sal aleatório e uma boa contagem de iteração).