O comando passwd
é especificamente protegido contra isso (acredito que para reduzir sua utilidade em ataques de adivinhação de senha de força bruta). Ele lê a entrada somente de um terminal conectado e não do STDIN normal - isso dificulta usá-lo para alterar as senhas do script.
Mas veja a página man do usermod