Você pode usar chpasswd
, que lê uma lista de combinações de nome de usuário / senha de STDIN e as aplica.
Para gerar a entrada, podemos fazer uma lista de todas as contas de usuário habilitadas que tenham uma senha definida usando passwd -Sa | grep -Po "^\S+(?= P)"
. Em seguida, acrescentamos dois pontos ":" e a nova senha após cada nome de usuário com a ajuda de sed
.
Essa construção seria assim:
passwd -Sa | grep -Po "^\S+(?= P)" | sed "s/$/:NEWPASSWORD/" | chpasswd
Ele deve ser executado como root, então devemos colocá-lo em um script e executá-lo como root (com sudo
), ou devemos executá-lo em um shell raiz Bash colocando-o dentro de sudo bash -c 'COMMAND'
.
Aqui está o comando completo que você pode executar, substituindo NEWPASSWORD
pelo que você deseja.
sudo bash -c 'passwd -Sa | grep -Po "^\S+(?= P)" | sed "s/$/:NEWPASSWORD/" | chpasswd'