Entendiendo los archivos /etc/passwd y /etc/shadow Copy
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).