Réponses:
Il s'agit d'une version plus courte et plus précise de la réponse d'AndreKR:
sudo getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1
Il n'a qu'un seul appel à cut
et trouvera les entrées de l'un des formulaires ci-dessous:
foo:!: ...
bar:*: ...
baz:: ...
Si vous voulez seulement vraiment vide:
sudo getent shadow | grep '^[^:]*::' | cut -d: -f1
Si vous avez GNU grep
, vous pouvez éliminer cut
complètement:
sudo getent shadow | grep -Po '^[^:]*(?=:.?:)'
ou
sudo getent shadow | grep -Po '^[^:]*(?=::)'
Leur entrée /etc/shadow/
ne contiendra aucun hachage de mot de passe. Vous devrez cependant être connecté en tant que root pour pouvoir les voir.
Le mot de passe crypté est le deuxième champ dans / etc / shadow.
Si le deuxième champ est vide, le mot de passe est vide:
awk -F":" '($2 == "") {print $1}' /etc/shadow
!
et *
est un mot de passe invalide (l'utilisateur ne peut pas se connecter):
awk -F":" '($2 == "!" || $2 == "*") {print $1}' /etc/shadow
L'utilisateur " utilisateur " a-t-il un mot de passe vide?
getent shadow | grep 'user:\$' | cut -d':' -f 2 | grep '\w' -c -m 1
retour 1 en cas d'échec - le mot de passe n'est pas vide
retour 0 en cas de succès - un mot de passe est défini
J'espère que c'est exact