Je me retrouve parfois dans une situation où un système sous-entretenu a un compte qui a été verrouillé. Le problème est qu'il existe plusieurs façons de verrouiller un compte, chacune avec sa propre méthode de déverrouillage.
Ce n'est pas que le compte est verrouillé de manière incorrecte, juste de manière inattendue, mais trouver le bon verrou à réinitialiser est difficile.
Mon attaque la plus récente de ce problème était sur un système SUSE, et il s'est avéré que le mot de passe avait expiré (ce qui n'était pas connu initialement parce que les tentatives de connexion n'étaient pas via un système qui fournissait ce genre de commentaires), puis également verrouillé en raison d'échecs de tentatives de connexion.
Existe-t-il une liste de tous les différents verrous de compte possibles et comment les désactiver? J'ai l'intention que les bris réels, tels que les problèmes d'accès au répertoire personnel, les bibliothèques PAM corrompues, etc., soient hors de portée pour cette question.
Vous pouvez utiliser passwd
pour recueillir des informations, par exemple si un compte est verrouillé
passwd -S user
user LK 2012-11-06 0 99999 7 -1 (Password locked.) (CentOS)
user L 01/22/2013 0 99999 7 -1 (Ubuntu)
L'utilitaire chage
fournira des informations sur les différents temporisateurs d'un compte, par exemple pour un mot de passe non expiré
chage -l user
Last password change : Nov 12, 2012
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
pour un mot de passe expiré
chage -l user
Last password change : password must be changed
Password expires : password must be changed
Password inactive : password must be changed
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 22
Number of days of warning before password expires : 33
Les utilitaires passwd
et chage
répertorient également de nombreux verrous de compte.
Vous pouvez utiliser getent
pour extraire les informations directement de la base de données appropriée pour examen
getent passwd user
user:x:505:505::/home/passtest:/sbin/nologin <-- denied login
getent shadow user
user:!!:0:0:22:33:44:: <-- this is locked
En général: non.
La réponse d'Iain est un bon résumé de la façon d'interroger les systèmes de vieillissement des mots de passe, mais a raté toutes sortes de choses. Par exemple:
sshd
.PAM
peut nécessiter une appartenance explicite à un groupe pour se connecter, ou peut uniquement autoriser une liste particulière d'utilisateurs./etc/nologin
, qui pour certaines applications (par exemple, ssh
) verrouillera tous les utilisateurs.En d'autres termes, il existe de nombreuses façons de verrouiller un compte qui n'ont rien à voir avec le fichier passwd
. Le mieux est de vérifier /var/log/secure
ou l'analogue local approprié à la distribution.
En plus de ce qui précède, passwd
chage
et getent
, il y a aussi pam_tally2
Si le nombre de tentatives de connexion infructueuses est supérieur à la limite autorisée (qui est définie dans /etc/pam.d/password-auth), vous devrez faire pam_tally2 --user=foo --reset
avant de pouvoir se reconnecter.
Le script suivant vous donnera une brève description de tous les utilisateurs et de leur statut (verrouillé ou non)
cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }'