fbpx
Lección 1, Tema 1
En progreso

Entendiendo los archivos /etc/passwd y /etc/shadow Copy

Noel Urbina 27 mayo, 2024

Hasta el momento ya sabemos como crear y eliminar cuentas de usuarios en nuestro servidor. ¿Dónde se almacena esta información? Esta información es almacenada en dos archivos de texto:

  • /etc/passwd: cualquier usuario puede ver la información de este archivo.
  • /etc/shadow: sólo root tiene acceso a la información.

Archivo /etc/passwd

root:x:0:0:root:/root:/usr/bin/zshwww-data:x:33:33:www-data:/var/www:/usr/sbin/nologinbackup:x:34:34:backup:/var/backups:/usr/sbin/nologingdm:x:118:124:Gnome Display Manager:/var/lib/gdm3:/bin/falsegnome-initial-setup:x:119:65534::/run/gnome-initial-setup/:/bin/falsechino:x:1000:1000:Noel Urbina,,,:/home/chino:/usr/bin/zshmysql:x:120:125:MySQL Server,,,:/nonexistent:/bin/false

Cada línea dentro de este archivo corresponde a una cuenta de usuario en el sistema. Las entradas se dividen en columnas, separadas por dos puntos, (:).

  • El nombre de usuario es en la primer columna.
  • Después sigue una x. (Hablaremos luego sobre esto)
  • UID: id del usuario.
  • GID: id del grupo del usuario. Cuando creas un usuario, el grupo primario del usuario es el mismo al nombre de usuario a menos que se específique.
  • Esta columna es para la información del usuario tales como nombre y apellidos.
  • La sexta columna muestra el home de cada usuario
  • Y la septima indica que shell, el usuario utilizará.

Archivo /etc/shadow

Ahora miremos el archivo /etc/shadow pero a diferencia del archivo /etc/passwd en este si necesitamos permisos del root.

sudo cat /etc/shadow
root:$6$RKQWJlT/$DTihJc.6ca/oHf/FpRQwu1QXGTFsi68XVDoZQAtd88AO/GGSUy1jnlWz4xxOh6N6id/DE7pEx/BrRPaVSqIZV1:18313:0:99999:7:::
www-data:*:18292:0:99999:7:::
backup:*:18292:0:99999:7:::
gdm:*:18292:0:99999:7:::
gnome-initial-setup:*:18292:0:99999:7:::
victor:$6$6e1.jc.JcRob$K5D6cNXfiT9wbMvFIolM8mAbaSSprLhccvmBs1OI3r71NKPoYYf.rQp.t5Z0/uBdd1b5LuBqgoCs/eS51jzZN1:18313:0:99999:7:::
mysql:!:18317:0:99999:7:::

En este archivo se tiene lo siguiente, y al igual que /etc/passwd las columnas van separadas por dos puntos. Además, podemos ver que no muestra el UID, sino el nombre de usuario y es porque el sistema sabe que UID coincide con el nombrede usuario y es gracias al archivo /etc/passwd.

  • Nombre del usuario
  • Es la parte más importante, porque aquí se encuentra el hash de la contraseña, y es la X que aparece en el arhicvo /etc/passwd la cual es encriptada.
  • La tercer columna se puede ver el número de días desde Unix Epoch que la ocntraseña fue cambiada. Pero es más sencillo verla con este comando sudo passwd -S <nombre de usuario>.
  • La cuarta columna nos dice cuántos días son necesarios para que el usuario pueda cambiar su contraseña nuevamente. En el caso de mi muestra anterior, daniel puede cambiar la contraseña en cualquier momento porque el número mínimo de días se establece en 0.
  • La quinta columna, como probablemente pueda adivinar, es el número máximo de días que pueden pasar entre los cambios de contraseña. Si requiere que sus usuarios cambien sus contraseñas cada cierto número de días, lo verá en esta columna. De manera predeterminada, esto se establece en 99,999 días.
  • En la sexta columna, tenemos el número de días que transcurrirán antes de la fecha de vencimiento en la que se advierte al usuario que pronto se le solicitará que cambie su contraseña.
  • En la séptima columna, establecemos cuántos días pueden pasar después de que caduque la contraseña, en cuyo caso la cuenta se deshabilitará. En nuestro ejemplo, esto no está configurado.
  • Finalmente, con la octava columna, podemos ver la cantidad de días transcurridos desde la época de Unix que transcurrirán antes de que se deshabilite la cuenta (en nuestro caso, no hay nada aquí, por lo que no hay un día deshabilitado).