Diferencia entre ! vs !! vs * en / etc / shadow

38

El segundo campo en el /etc/shadowarchivo de Linux representa una contraseña. Sin embargo, lo que hemos visto es que:

  1. Algunos de los campos de contraseña pueden tener una sola exclamación

    <account>:!:.....
    
  2. Algunos de los campos de contraseña pueden tener una doble exclamación

    <account>:!!:.....
    
  3. Algunos de los campos de contraseña pueden tener un signo de asterisco

    <account>:*:.....
    

Según algunas investigaciones en Internet y a través de este hilo , puedo entender que *significa contraseña nunca establecida, !significa bloqueado.

¿Alguien puede explicar qué significa doble exclamación ( !!)? y cómo es diferente de ( !)?

JavaTec
fuente
¿Qué distribución estás usando?
muru
Hola Muru, soy nuevo en Unix e intento crear un script que se ejecutará en RHEL 6.6 y HP-UX B.11.23
JavaTec
3
"Por convención, las cuentas que no están destinadas a iniciar sesión (por ejemplo, bin, daemon, sshd) solo contienen un asterisco en el campo de contraseña. Tenga en cuenta que no hay nada especial sobre '*', es solo uno de los muchos caracteres eso no puede ocurrir en una contraseña cifrada válida (ver cripta (3)) ". - Página de manual de OpenBSD para passwd (5) . Yo esperaría ! o !! para no ser diferente, técnicamente, con respecto a si es un archivo passwd válido o con respecto a los inicios de sesión. Sin embargo, algunas herramientas pueden tener un soporte especial.
TOOGAM
1
No use el doco de los BSD como referencias para esto. Su base de datos de cuentas maneja las cosas de manera diferente y ni siquiera tiene un /etc/shadowarchivo. Tampoco pongas respuestas en los comentarios . ☺
JdeBP

Respuestas:

31

Ambos "!" y "!!" estar presente en el campo de contraseña significa que una cuenta está bloqueada.

Como se puede leer en el siguiente documento, "!!" en una entrada de cuenta en sombra significa que se ha creado la cuenta de un usuario, pero aún no se le ha dado una contraseña. Hasta que un administrador de sistemas le dé una contraseña inicial, está bloqueada de manera predeterminada.

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/System_Administration_Guide/s2-redhat-config-users-process.html

Rui F Ribeiro
fuente
44
Esto puede ser cierto en los sistemas Red Hat, pero no necesariamente en otros lugares: en Ubuntu o Arch Linux, una cuenta recién creada sin contraseña solo tiene !, no !!.
muru
2
Es cierto que nunca he visto un "!!" en un sistema Debian. Supongo que el OP está utilizando algún sistema basado en RH, o SuSE.
Rui F Ribeiro
Gracias por sus respuestas rápidas, ¿la explicación anterior proporcionada por Rui - también es válida para un hp-ux?
JavaTec
44
@JavaTec No necesariamente: creo que todos los unices que tienen /etc/shadowel mismo campo, pero la forma en que el campo de contraseña almacena información que no es de contraseña varía. Consulte la documentación de HP-UX, comenzando con la shadowpágina del manual.
Gilles 'SO- deja de ser malvado'
1
HP-UX ni siquiera tenía /etc/shadowhasta hace relativamente poco tiempo: antes de HP-UX 11.11, las opciones eran sin sombra clásicas /etc/passwdo "Trusted Computing Base", que almacenaban los hashes de contraseña de cada usuario y otra información de cuenta en archivos individuales nombrados /tcb/files/auth/<initial>/<username>, legibles solo por root. En HP-UX 11.11, /etc/shadowse introdujo como un extra opcional , en 11.23 era una opción en el sistema operativo base, y en 11.31 el TCB fue finalmente desaprobado.
telcoM
10

También vale la pena señalar <account>::.....que significa que no se requiere contraseña (contraseña vacía).

Si está creando un usuario de solo ssh, puede usar <account>::0:0:99999:7:::para exigir que el usuario establezca su contraseña (es decir, que usa para sudo) en su primer inicio de sesión.

CoolAJ86
fuente
8
Cuidado con esto. Un campo vacío significa que no hay contraseña, y solo tiene que presionar ENTER para iniciar sesión, al menos en la consola.
Rui F Ribeiro
Con man shadowrespecto al campo de contraseña cifrada: "Este campo puede estar vacío, en cuyo caso no se requieren contraseñas para autenticarse como el nombre de inicio de sesión especificado". <- Al dejar este campo vacío, se genera una cuenta abierta y esto debería evitarse.
Laas
Tenga en cuenta que muchas implementaciones de SSH bloquean el inicio de sesión en cuentas con contraseña nula de forma predeterminada: sudo /usr/sbin/sshd -T| grep emptydevolverían: "permitemptypasswords no"
Brian Huntley