unix centos – Dos formas de bloquear una contraseña, pero solo una para desbloquear

Pregunta:

CentOS 6 Linux tiene dos formas de bloquear una contraseña:

  1. passwd -l
  2. usermod -L

Hoy descubrí que hacen algo diferente.

passwd escribe dos signos de exclamación en el archivo de sombra.

# passwd -d test1
Removing password for user test1.
passwd: Success
# passwd -l test1
Locking password for user test1.
passwd: Success
# passwd -S test1
test1 LK 2014-01-14 0 99999 7 -1 (Password locked.)
# grep test1 /etc/shadow
test1:!!:16084:0:99999:7:::

Pero usermod escribe solo uno.

# passwd -d test1
Removing password for user test1.
passwd: Success
# usermod -L test1
# passwd -S test1
test1 LK 2014-01-14 0 99999 7 -1 (Password locked.)
# grep test1 /etc/shadow
test1:!:16084:0:99999:7:::

¿Es esto solo una inconsistencia cosmética o hay un significado para los diferentes indicadores de bloqueo?

Suceden cosas divertidas si mezclas los dos comandos:

Bloquear una cuenta con passwd :

# passwd -l test1
Locking password for user test1.
passwd: Success

Desbloquéalo con usermod :

# usermod -U test1

Y sorpresa, todavía está bloqueado:

# passwd -S test1
test1 LK 2014-01-14 0 99999 7 -1 (Password locked.)

¿Error o característica?

Respuesta:

No importa. El comportamiento que está viendo es específico de la implementación . Es por eso que usermod hace una cosa y passwd hace otra. Son implementaciones diferentes. Vea lo que sucede en Solaris, AIX, HP-UX, True64, Xenix …

El campo de contraseña es una cadena cifrada o con hash. Cuando el usuario proporciona una contraseña, se cifra o se aplica un hash de acuerdo con el algoritmo especificado en el campo de contraseña. La autenticación solo tiene éxito si coinciden los formularios cifrados / hash proporcionados y almacenados.

¡Un solo ! o un doble !! nunca puede coincidir con ninguna contraseña cifrada. En otras palabras, no hay ninguna entrada que se cifre en el valor del resultado ! o !! . Cualquier cadena que nunca podría ser el resultado hash "bloqueará" la cuenta. Bien puede ser foo o el Mr. Spock .

También tenga en cuenta este comentario bajo el indicador --lock en passwd(1) en Linux:

Tenga en cuenta que esto no deshabilita la cuenta. Es posible que el usuario aún pueda iniciar sesión con otro token de autenticación (por ejemplo, una clave SSH). Para deshabilitar la cuenta, los administradores deben usar usermod --expiredate 1 (esto establece la fecha de vencimiento de la cuenta al 2 de enero de 1970).

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım