¿Dónde y cómo se almacenan las contraseñas en Linux?

Where How Are Passwords Stored Linux



El nombre de usuario con la contraseña correspondiente para una cuenta específica es el requisito principal a través del cual un usuario puede acceder a un sistema Linux. La contraseña de todas las cuentas de usuario se guarda en un archivo o base de datos para que un usuario pueda ser verificado durante el intento de inicio de sesión en el sistema. Todos los usuarios no tienen las habilidades y la experiencia suficientes para ubicar este archivo en su sistema. Sin embargo, si obtiene acceso a la base de datos o un archivo que guarda todas las contraseñas del usuario de inicio de sesión, puede acceder fácilmente al sistema Linux. Cuando un usuario ingresa un nombre de usuario y una contraseña en Linux para iniciar sesión, compara la contraseña ingresada con una entrada en varios archivos del directorio '/ etc'.

Los archivos / etc / passwd guardan toda la información importante que es necesaria para el inicio de sesión del usuario. Para explicarlo en palabras más simples, el archivo / etc / passwd almacena los detalles de la cuenta del usuario. Este archivo es un archivo de texto sin formato que contiene una lista completa de todos los usuarios de su sistema Linux. Tiene la información sobre nombre de usuario, contraseña, UID (identificación de usuario), GID (identificación de grupo), shell y directorio de inicio. Este archivo debe tener permisos de lectura, ya que se utilizan muchas utilidades de línea de comandos para asignar los ID de usuario al nombre de usuario. Pero, debe tener permisos de acceso de escritura limitados solo para cuentas de superusuario o usuario raíz.







Este artículo demostrará cómo y dónde puede almacenar las contraseñas de las cuentas de los usuarios del sistema en la distribución de Linux. Hemos implementado todas las demostraciones en el sistema Ubuntu 20.04. Sin embargo, puede encontrar el archivo / etc / passwd en cualquier distribución de Linux.



Prerrequisitos

Debe tener privilegios de root para ejecutar comandos administrativos.



Comprensión básica sobre el archivo / etc / passwd

El archivo / etc / passwd contiene la información sobre la cuenta de usuario de su sistema. Todos los campos almacenados están separados del signo de dos puntos.
Cuando ejecute el siguiente comando, verá cada entrada de archivo de / etc / passwd file:





$gato /etc/passwd

El comando anterior enumerará todos los usuarios de su sistema Linux.
El siguiente tipo de formato se mostrará en la pantalla de su terminal:

Detalles sobre el formato de los campos / etc / passwd
De la imagen de arriba:

Nombre de usuario: El campo uno representa el nombre del usuario. La longitud del campo de nombre de usuario se define entre 1 y 32 caracteres. Se utiliza cuando un usuario inicia sesión en el sistema. En el ejemplo anterior, 'khuzdar' es el nombre de usuario.
Contraseña: En el ejemplo anterior, el carácter x muestra que la contraseña está almacenada en forma cifrada en el archivo / etc / shadow.
ID de usuario (UID): La identificación de usuario debe asignarse por separado a cada usuario. El UID cero se asigna al usuario raíz y los ID de usuario del 1 al 99 se asignan a cuentas predefinidas o estándar. Los UID adicionales de 100 a 999 se asignan a grupos o cuentas administrativas del sistema. En la captura de pantalla anterior, el ID de usuario es 1001.
ID de grupo (GID): El siguiente campo representa el ID del grupo. El GID se almacena en el archivo / etc / group. Según el ejemplo anterior, el usuario pertenece al grupo id 1001.
Información sobre la identificación de usuario: El siguiente campo está destinado a comentarios. En este campo, puede agregar información adicional sobre el usuario especificado, como el nombre completo del usuario, el número de teléfono, etc. Sin embargo, en el ejemplo anterior, el usuario no proporciona ningún número de teléfono.
Directorio de inicio: Este campo muestra la ubicación del directorio de inicio que está asignado al usuario actual. Si el directorio especificado no existe, mostrará /. La imagen de arriba muestra la ubicación del usuario resaltado en el directorio de inicio, que es home / kbuzdar.
Comando // shell: La ruta absoluta predeterminada de un shell o comando es / bin / bash. Esto se conoce como caparazón. Por ejemplo, sysadmin usando el shell nologin. Se comporta como el shell de reemplazo para las cuentas de usuario del sistema. Si el shell se encuentra en la ruta a / sbin / nologin y el usuario desea iniciar sesión directamente en el sistema Linux, el shell / sbin / nologin cerrará o deshabilitará la conexión.



Buscar usuario en el archivo / etc / passwd

Puede buscar un usuario específico con el archivo / etc / passwd, usando el comando grep. Por ejemplo, queremos buscar el nombre de usuario 'kbuzdar' del archivo / etc / passwd, usando la siguiente sintaxis, luego podemos buscar fácilmente un usuario específico, ahorrando nuestro tiempo:

$sujeciónnombre de usuario/etc/passwd

La sintaxis anterior cambiará a la siguiente forma:

$sujeciónchirriador/etc/passwd


O

$sujeción -en '^ kbuzdar' /etc/passwd

Mostrar permisos en el archivo / etc / passwd

Como mencionamos anteriormente, todos los demás usuarios, excepto el root, deberían poder leer el permiso en el archivo / etc / passwd, y el propietario debe ser superusuario o root.
Escriba lo siguiente para verificar los permisos de lectura en el archivo:

$ls -los /etc/passwd

La siguiente muestra de salida se mostrará en el terminal:

Leyendo el archivo / etc / passwd

Puede leer el archivo / etc / passwd en su sistema Linux utilizando el siguiente script bash o ejecutar directamente lo que se escribe a continuación mientras se ejecutan los comandos de bucle en la terminal.
Cree un archivo de texto y pegue el siguiente código en él:

#! / bin / bash
# total de siete campos de / etc / passwd almacenados como $ f1, f2 ..., $ f7

tiempo IFS=:leer -rf1 f2 f3 f4 f5 f6 f7
hacer
echo 'Usuario$ f1usar$ f7shell y almacena archivos en$ f6directorio.'
hecho < /etc/passwd

Usando el ciclo while, leerá los siete campos y luego mostrará iterativamente el contenido del archivo en la terminal.
Guarde el archivo anterior con el nombre 'readfile.sh'.

Ahora, ejecute el archivo anterior usando el siguiente comando:

$intentoreadfile.sh

Explore el archivo / etc / shadow

El archivo / etc / shadow contiene todas sus contraseñas cifradas que están almacenadas en este archivo y que solo pueden leer los usuarios root.
Ejecutemos el siguiente comando para mostrar el contenido:

$sudo gato /etc/sombra

Puede ver toda la contraseña en formato cifrado:

Conclusión

Hemos visto en el artículo anterior, todos los detalles de la cuenta del usuario y las contraseñas almacenadas en el archivo / etc / passwd en el sistema Linux. Puede leer este archivo, pero solo los usuarios root tienen permisos de escritura. Además, también hemos visto todas las contraseñas cifradas almacenadas en el archivo / etc / shadow. También puede explorar el archivo / etc / group para obtener detalles sobre el grupo del usuario.