Eu acho que para encontrar entradas sem senha, você terá que usar /etc/shadow :
sudo grep -Ec '\!|\*' /etc/shadow
Os caracteres ! e * indicam que não há senha Unix para o usuário, por exemplo:
root:!:17092:0:99999:7:::
colord:*:17086:0:99999:7:::
As entradas em /etc/shadow correspondem às entradas em /etc/passwd
Em vez de uma contagem, você pode obter uma lista limpa de apenas os nomes de usuários:
sudo grep -E '\!|\*' /etc/shadow | grep -o '^[^:]*'
Você pode usar -v para inverter a correspondência e contar ou listar usuários com senhas, é claro:
sudo grep -vE '\!|\*' /etc/shadow | grep -o '^[^:]*'
Notas:
-
-Eusa ERE, então podemos usar|para alternação -
-cretorna uma contagem das linhas, não das próprias linhas -
-oapenas imprime a parte correspondente -
'^[^:]*'desde o início da linha até o primeiro: