Comment trouver toutes les façons dont un compte utilisateur Unix est verrouillé


12

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 verrou correct à 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 initialement connu 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.

Réponses:


13

Vous pouvez utiliser passwdpour 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' chageutilitaire 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 passwdet chagerépertorient également de nombreux verrous de compte.

Vous pouvez utiliser getentpour extraire les informations directement de la base de données pertinente 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

7

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:

  • Quelqu'un essayant de se connecter via ssh pourrait être interdit par les directives dans la sshdconfiguration.
  • Un système peut être configuré pour autoriser uniquement les membres d'un certain netgroup à se connecter.
  • La PAMconfiguration locale peut nécessiter une appartenance explicite à un groupe pour se connecter, ou ne peut autoriser qu'une liste particulière d'utilisateurs.
  • Ce qui ressemble à un compte verrouillé peut s'avérer être un problème d'accès au répertoire personnel.
  • Il se peut que quelqu'un ait créé /etc/nologince 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 passwdfichier. Votre meilleur pari est de vérifier /var/log/secureou l'analogue local approprié à la distribution.


J'avais l'intention de poser ma question en supposant que les choses n'étaient pas "cassées" et que l'utilisateur avait pu se connecter auparavant. C'est-à-dire qu'un système fonctionnant correctement a verrouillé le compte. Ce sont de bons points, mais je mettrai à jour la question pour être un peu plus explicite.
wfaulk

1

En plus de ce qui précède, passwd chageet getent, il y a aussipam_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 le faire pam_tally2 --user=foo --resetavant de pouvoir vous reconnecter.


0

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) }'

Cela vérifie uniquement l'une des façons dont un compte peut être verrouillé.
wfaulk
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.