Edite o banco de dados de sombra com:
vipw -s
que também bloqueará o arquivo contra atualizações, e então usará seu editor de texto para substituir o segundo campo de cada linha que tenha um campo pw.
Por exemplo, use:
$ openssl rand -base64 12
gw9H5sqr8YioMdwd
$ openssl passwd -1
Password:
Verifying - Password:
$1$Nx/XBIYy$JGPhkX8DC9uJqggEFuKxP0
e depois como root, use vipw -s; supondo que seu texto $ EDITOR / $ VISUAL seja vi (m), então vipw vai despejar você nisso e você pode fazer:
:g/^[^:]*:[^*!:][^:]*:/s,:[^:]*,:$1$Nx/XBIYy$JGPhkX8DC9uJqggEFuKxP0:,
que é uma correspondência de padrão básica e que as linhas correspondentes a esse padrão fazem uma substituição (apenas uma vez por linha). A correspondência de padrões exclui linhas com um campo de senha '!' ou '*', portanto, apenas define senhas para usuários que já tenham senhas configuradas, não importando qual seja o uid; isso protegerá você contra casos em que um sistema de empacotamento criou uma conta de "sistema" com um alto fluxo ou qualquer outro absurdo produzido por algum empacotador.
Observe que isso também redefinirá a senha de root. Se você quiser excluir isso e root estiver na primeira linha, substitua a inicial: g por: 2, $ g