Cómo almacena y administra Linux las contraseñas de los usuarios

¿Se ha preguntado cómo gestiona Linux de forma eficiente un entorno multiusuario? En este artículo explicamos cómo Linux almacena y administra las contraseñas y los inicios de sesión de los usuarios.

Explorando el archivo /etc/passwd

Cuando un usuario ingresa un nombre de usuario y una contraseña, Linux compara la contraseña ingresada con una entrada en varios archivos en el directorio “/etc”.

El “/etc/passwd” es uno de los archivos más importantes que almacena los detalles del usuario.

mostrar el archivo /etc/passwd

La última entrada de este fichero corresponde a usuarios “carbon”. Hay varios campos de información separados por dos puntos (:).

  • carbon : nombre del usuario a quien corresponde esta entrada.
  • x : indica que existe una contraseña para el usuario. Sin embargo, la contraseña se almacena en el archivo “/etc/shadow”. si en lugar de x muestra un ! símbolo, esto indica que no existe una contraseña.
  • 1000 : ID de usuario de este usuario.
  • 1000: ID de grupo del grupo al que pertenece este usuario.
  • carbon, , , : indica varios campos de información, incluidos el nombre completo y los números de teléfono. Aquí, no se han proporcionado números de teléfono.
  • /home/carbon : ubicación del directorio de inicio asignado a este usuario.
  • /bin/bash : shell predeterminado asignado a este usuario.

Vamos a crear otro usuario para el que se han almacenado algunos números de teléfono. El usuario “plutón” se agrega al sistema usando el adduser dominio.

campo GECOS del usuario de Linux

Mirando el archivo «etc/passwd» nuevamente, podemos ver la información completa para el usuario «pluto». El campo que tiene una lista de nombres completos y números separados por comas se denomina «campo GECOS».

muestra /etc/passwd con los detalles del teléfono

Cada vez que se crea un usuario, los valores del directorio de inicio y el shell predeterminado que deben asignarse se especifican en el archivo «/etc/adduser.conf».

agregarusuario.conf

Los ID de usuario para usuarios creados comienzan desde 1000 y se ejecutan hasta 59999.

El usuario “carbon” pudo ver las entradas del archivo “/etc/passwd” simplemente usando el cat dominio. Echemos un vistazo a sus permisos.

permiso de archivo /etc/passwd

Solo el usuario «raíz» puede escribir en el archivo. Otros usuarios solo pueden leer el archivo. Dado que todos pueden leer este archivo, no es ideal almacenar contraseñas aquí. En su lugar, se almacena en otro archivo llamado «/etc/shadow».

Explorando el archivo /etc/shadow

Ahora intentemos ver la contraseña almacenada para los usuarios «carbon» y «pluto» en el archivo «/etc/shadow».

/etc/permiso de sombra denegado

Echando un vistazo a los permisos para el archivo «/etc/shadow», podemos ver que solo el usuario «raíz» puede leer y escribir en el archivo. Además, solo los miembros del grupo «sombra» pueden leer el archivo. En realidad, el grupo «sombra» está vacío pero se requiere sintácticamente para este archivo.

/etc/permiso de archivo shadow

Al iniciar sesión como «raíz», podemos ver las últimas diez líneas de «/etc/shadow». Por cada entrada en “/etc/passwd”, hay una entrada correspondiente en este archivo. El formato será así:

pluto:$6$JvWfZ9u....:18283:0:99999:7:::

mostrar las entradas de /etc/shadow

En este archivo, también, cada entrada tiene varios campos separados por dos puntos (:). Vamos a descifrar la entrada para el usuario «plutón».

  • pluto : nombre del usuario a quien corresponde esta entrada.
  • $6$JvWfZ9u.$yGFIqOJ.... : La contraseña de usuario codificada almacenada junto con información sobre el algoritmo de cifrado utilizado. Además, se utiliza un valor salt junto con la contraseña de texto sin formato para generar el hash de la contraseña.
{ plaintext password, salt} -> hashed password

Procesemos el contenido de este campo. los $ El símbolo se utiliza como delimitador para separar tres campos.

$6  $JvWfZ9u.  $yGFIqOJ....
  • $6 : el algoritmo hash utilizado. Aquí está la lista de posibles algoritmos hash.
    • $1: MD5
    • $2a: pez globo
    • $2y: Eksblowfish
    • $5: SHA-256
    • $6: SHA-512
  • $JvWfZ9u. : valor de sal.
  • $yGFIqOJ.... : contraseña hash.

El valor hash resultante se almacena como la contraseña cifrada de un usuario. El valor de la sal es único para cada usuario. Incluso si dos usuarios tienen la misma contraseña de texto sin formato, el uso de una sal única generaría un valor hash único.

Siguiendo con el resto de campos de esta entrada,

  • 18283: Indica el número de días desde el 1 de enero de 1970, que se cambió la contraseña por última vez
  • 0 : este campo se utiliza para indicar el número de días después de los cuales se puede cambiar la contraseña. Un valor de 0 significa que la contraseña se puede cambiar en cualquier momento.
  • 99999 : este campo indica el número de días después de los cuales se debe cambiar la contraseña. Un valor de 99999 indica que un usuario puede conservar la contraseña todo el tiempo que desee.
  • 7 : si la contraseña está configurada para caducar, este campo indica el número de días para advertir al usuario sobre la caducidad de la contraseña.
  • : : : Tres campos más forman parte de esta entrada, aunque aquí están vacíos. El primero indica el número de días de espera después de la caducidad de la contraseña, después de lo cual se desactivará la cuenta. El segundo indica el número de días desde el 1 de enero de 1970 que una cuenta ha estado inhabilitada. El tercer campo está reservado para uso futuro. Los campos vacíos indican que la contraseña existente para este usuario no ha caducado y no está configurada para caducar pronto.

Se dice colectivamente que los últimos siete campos relacionados con la validez de la contraseña contienen información sobre la «Política de antigüedad de la contraseña».

Los valores predeterminados correspondientes a la “Política de caducidad de la contraseña” se especifican en el archivo “/etc/login.defs”. Estos valores pueden ser modificados para un usuario usando el change dominio.

iniciar sesión.defs

¿Qué pasa con la información del grupo?

La información de usuario y las contraseñas se almacenan en los archivos “/etc/passwd” y “/etc/shadow”. Asimismo, la información del grupo se almacena en el archivo “/etc/group”.

mostrar las entradas de /etc/group

Arriba se destacan los grupos que pertenecen a los usuarios «carbon» y «plutón». Cuando se crea un usuario en Linux, ese usuario se asigna inmediatamente a un grupo con el mismo nombre que el nombre de usuario.

Los miembros de un grupo también pueden compartir una contraseña de grupo para actividades relacionadas con el grupo. El valor de x indica que la información de la contraseña para ese grupo estaría en el archivo “/etc/gshadow”.

Sin embargo, el acceso a “/etc/gshadow” está restringido al usuario “root”.

/etc/gshadow permiso denegado

El usuario «raíz» puede ver las entradas de «/etc/gshadow», que es similar a «/etc/shadow». Mirando la entrada para el grupo «carbono», podemos ver que el segundo campo tiene un valor de !lo que indica que no existe una contraseña para este grupo.

Contraseña 11

Poniendolo todo junto

Cuando un usuario desea iniciar sesión, el hash de la contraseña ingresada se encuentra utilizando el valor salt de ese usuario en «/etc/shadow». Luego se compara con el hash almacenado. Si los valores coinciden, se otorga acceso al usuario.

Relacionado:

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada.