domingo, 26 de mayo de 2024

Ficheros de usuario y contraseñas en linux

Posted by q3it on domingo, mayo 26, 2024 in


Cuando estamos trabajando con sistemas linux y necesitamos saber información sensible de un usuario es importante saber dónde se aloja dicha información y sobre todo como interpretarla. Esta información cuelga del directorio /etc y en concreto apuntan a los ficheros passwd y shadow
 
El fichero passwd contendrá información de todos los usuarios locales, esa misma información que nosotros hemos indicado con useradd o adduser al crear el usuario. Los campos que contendrá este fichero es:
  • Nombre de usurio.
  • Contraseña. ("x" indica que está en /etc/shadow ) ("!" indica usuario bloqueado)
  • Id de usuario.
  • Id de grupo principal.
  • Información.
  • Directorio del usuario.
  • Shell.

Como vemos en la imagen, tenemos a los usuarios devnull y qbit en el sistema, hacemos una consulta id sobre el segundo usuario y nos indica que está dentro del fichero shadow :x:, luego tenemos UID del usuario :1200:, el GID grupo principal :1200:, la descripción que le indicamos cuando lo creamos :Usuario de prueba:, cuál es su directorio :/home/qbit: y cuál es su shell :/bin/sh:. Vemos que coincide el UID y GID con la consulta del comando id.
 
Y el segundo fichero es shadow, que contendrá contraseñas e información sobre validez de contraseñas y cuentas. Y los campos campos que contiene son los siguientes: 
  • Nombre de usuario.
  • Contraseña cifrada.
  • Fecha último cambio de contraseña.*
  • Días mínimo de validez de la contraseña.
  • Días máximo de validez de la contraseña.
  • Periodo aviso contraseña.
  • Periodo de inactividad contraseña.
  • Fecha de expiración.*
  • Reservado. 
* Días desde el 1 de enero de 1970.
 
 
En la captura vemos que el primero es el nombre de usuario que va a coincidir con passwd, en el segundo campo tendría que poner una contraseña cifrada pero cuando se creó el usuario son useradd no se le asigno una contraseña por eso aparece un signo de admiración :!:.
 
 
En la imagen utilicé la misma consulta para el usuario devnull y vemos que tiene la contraseña cifrada. El tercer campo es la fecha del último cambio de día, estas fecha indican el número de días desde el 1 de enero de 1970. 
 
Luego se establece el mínimos de validez de una contraseña. Esto significa que si cambió la contraseña hoy, voy a tener que esperar los días que le haya puesto en este campo para poder volver a cambiar la contraseña, si está el valor en 0 yo podré cambiar la contraseña tantas veces como quiera en el mismo día. 
 
El quinto campo es el día máximo de validez de la contraseña. Imaginemos que yo he cambiado la contraseña hace una semana y en este campo tengo 90 días, entonces me quedarán 83 días de validez para esta contraseña, pasada esa fecha tengo que cambiar la contraseña para poder seguir utilizando ese cuenta.
Período de avisos de claves, es el siguiente campo y nos indica cuántos días vamos a indicarle para que nos avise que nuestra contraseña está a punto de expirar. 
 
Luego tenemos un período de inactividad de contraseña. Imaginemos que nosotros hemos pasado esos 90 días, no hemos cambiado la contraseña, nuestra contraseña se bloquea, y nosotros especificamos siete días aparte, si pasa siete días desde la fecha de expiración y nosotros no hemos cambiado la contraseña nuestra cuenta se bloqueará, y sólo un administrador podrá desbloquearla. También tendremos la fecha de expiración de la cuenta que nos da la contraseña y, también lo indicaremos en días desde el 1 de enero de 1970. El último campo reservado y no es utilizado y no creo que se vaya a utilizar nunca.
 
 
En modo de ejemplo vamos a ponerle contraseña a el usuario qbit. Como se ve en la captura, tenemos en días cuando ha sido modificada por última vez :19869:. ¿Cuando puedo yo cambiar la contraseña? Como está en cero, la puedo cambiar cuando quiera :0:. ¿Cuánto es la validez de esta contraseña? En este caso, vemos que es un número muy grande, indica que la validez es para siempre :99999:. Luego tenemos el 7, que es el valor por defecto que da el sistema como período de preaviso. ¡Si aquí! :99999: tuviéramos 90, pues pasados 83 días desde el último cambio nos lo avisará. 
 
Y los últimos valores están vacíos. Eso es porque no indicamos tanto el período de inactividad de la contraseña como la fecha de expiración de esta. 
 
 
Si nosotros cambiamos la fecha de expiración del usuario qbit, vemos que se nos añade en el penúltimo campo el valor :19934: que indicará los días desde 1970 hasta la fecha de expiración que es 30-07-2024.