Respostas:
Esta é uma versão mais curta e mais precisa da resposta de AndreKR:
sudo getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1
Ele tem apenas uma chamada cute encontrará entradas de qualquer um dos formulários abaixo:
foo:!: ...
bar:*: ...
baz:: ...
Se você quer apenas verdadeiramente vazio:
sudo getent shadow | grep '^[^:]*::' | cut -d: -f1
Se você possui o GNU grep, pode eliminar cutcompletamente:
sudo getent shadow | grep -Po '^[^:]*(?=:.?:)'
ou
sudo getent shadow | grep -Po '^[^:]*(?=::)'
A entrada deles /etc/shadow/não terá hash de senha. Você precisará estar logado como root para poder vê-los.
O usuário " user " possui uma senha vazia?
getent shadow | grep 'user:\$' | cut -d':' -f 2 | grep '\w' -c -m 1
retornar 1 em caso de falha - a senha não está vazia
retornar 0 em caso de sucesso - uma senha está definida
Espero que isso seja preciso