Cómo encontrar todas las formas en que una cuenta de usuario de Unix está bloqueada

12

Ocasionalmente me encuentro en una situación en la que un sistema mal mantenido tiene una cuenta que ha sido bloqueada. El problema es que hay una variedad de formas en que se puede bloquear una cuenta, cada una con su propio método de desbloqueo.

No es que la cuenta se bloquee de manera incorrecta, solo inesperadamente, pero es difícil encontrar el bloqueo correcto para restablecer.

Mi ataque más reciente a este problema fue en un sistema SUSE, y resultó que la contraseña había expirado (lo que no se conocía inicialmente porque los intentos de inicio de sesión no se realizaron a través de un sistema que proporcionó ese tipo de comentarios), y luego también se bloqueó debido a intentos fallidos de inicio de sesión.

¿Hay una lista en algún lugar de todos los diferentes bloqueos de cuenta posibles y cómo deshabilitarlos? Tengo la intención de que la ruptura real, como problemas de acceso al directorio de inicio, bibliotecas PAM corruptas, etc., esté fuera del alcance de esta pregunta.

wfaulk
fuente

Respuestas:

13

Puede utilizar passwdpara recopilar información, por ejemplo, si una cuenta está bloqueada

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)

La chageutilidad proporcionará información sobre los distintos temporizadores en una cuenta, por ejemplo, para una contraseña no vencida

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

para una contraseña caducada

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

Las utilidades passwdy chagetambién enumeran muchos de los bloqueos de cuenta.

Puede utilizar getentpara extraer la información directamente de la base de datos relevante para su 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
usuario9517
fuente
7

En general: no.

La respuesta de Iain es un buen resumen de cómo consultar los sistemas de antigüedad de la contraseña, pero se perdió todo tipo de cosas. Por ejemplo:

  • Alguien que intente iniciar sesión a través de ssh podría estar prohibido por las directivas en la sshdconfiguración.
  • Se puede configurar un sistema para permitir que solo los miembros de un determinado grupo de red inicien sesión.
  • La PAMconfiguración local puede requerir la pertenencia explícita al grupo para iniciar sesión, o solo puede permitir una lista particular de usuarios.
  • Lo que parece una cuenta bloqueada puede ser un problema de acceso al directorio de inicio.
  • Alguien puede haber creado /etc/nologin, lo que para algunas aplicaciones (por ejemplo, ssh) bloqueará a todos los usuarios.

En otras palabras, hay muchas formas de bloquear una cuenta que no tienen nada que ver con el passwdarchivo. Su mejor opción es verificar /var/log/secureo el análogo local apropiado para la distribución.

larsks
fuente
Tenía la intención de que mi pregunta asumiera que las cosas no estaban "rotas" y que el usuario había podido iniciar sesión antes. Es decir, que algún sistema que funciona correctamente bloqueó la cuenta. Estos son buenos puntos, pero actualizaré la pregunta para que sea un poco más explícito.
wfaulk
1

Además de lo mencionado anteriormente, passwd chagey getent, también haypam_tally2

Si el número de intentos fallidos de inicio de sesión está por encima del límite permitido (que se establece en /etc/pam.d/password-auth), tendrá que hacerlo pam_tally2 --user=foo --resetantes de que puedan iniciar sesión nuevamente.

Jistanidiot
fuente
0

El siguiente script le daría una breve descripción de todos los usuarios y su estado (bloqueado o no)

cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }'
Arun Krishnan
fuente
Eso solo verifica una de las formas en que se puede bloquear una cuenta.
wfaulk