Administración de Usuarios y Contraseñas#
Archivo /etc/passwd#
Almacena la información sobre shell, directorio de trabajo por defecto, gecos, etc. Tiene permisos de lectura para cualquier usuario pero solo el usuario root puede modificarlo.
Es la base de datos de los usuarios del sistema operativo.
Sintaxis#
El archivo passwd contiene una linea por cada cuenta de usuario, y cada linea contiene 7 campos separados por :(dos puntos).
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin
student:x:1001:1001::/home/student:/bin/bash
| Campo | Descripción |
|---|---|
| mysql | Nombre de Inicio de Sesion |
| x | Contraseña opcional encriptada, este ya no se usa por ser inseguro y se utiliza en su lugar el archivo shadow. |
| 27 | UID User Identifier |
| 27 | GID Group Identifier |
| MySQL Server | Gecos o Campo de Comentario |
| /var/lib/mysql | Directorio de Trabajo por Defecto del Usuario |
| /sbin/nologin | Shell asignada al usuario |
Archivo /etc/shadow#
El archivo shadow es un archivo que contiene la información de contraseñas de los usuarios de nuestro sistema, así como también información de expiración de la contraseña. El archivo contiene una linea por cada cuenta de usuario y a su vez contiene 9 campos separados por :(dos puntos).
Sintaxis#
student:$6$RjTuGFZAt5Gz.SLy$mbyEeakn29q2ThZ.mpuzC7Rvh/TtvD.9y9Dlz3.e7TjG8t2AbngWd4/db8mNOkOZAEGw8tls0A.ZNKw1j4Opi/:19293:0:99999:7:::
| Campo | Descripción |
|---|---|
| student | Nombre del Usuario |
| $6$RjTuGFZAt5Gz.SLy$mbyEeakn29q2ThZ. | Contraseña encriptada |
| 19293 | Fecha del último cambio de contraseña expresada con el número de días transcurridos desde Enero 1 de 1970 |
| 0 | Edad minima de la contraseña es el numero de días que el usuario debe esperar para poder realizar un cambio de contraseña. |
| 99999 | Edad máxima de la contraseña es el numero de días máximo para realizar un cambio de contraseña (contraseña expirada). |
| 7 | Periodo de alerta de contraseña es el número de días antes de que la contraseña expire, el usuario estará siendo alertado. |
| :: | Periodo de inactividad de la contraseña es el numero de días después de que la contraseña a expirado, y que continuara siendo valida, después de este tiempo el usuario no podrá iniciar sesión. |
| :: | Fecha de expiración de la cuenta expresada con el número de días transcurridos desde Enero 1 de 1970. |
| : | Campo para ser utilizado en el futuro |
Composición de una contraseña#
Las contraseñas almacenadas en el archivo /etc/shadow se divide en 3 partes separadas por $:
| No. | Ejemplo | Descripción |
|---|---|---|
| 1 | $6 | tipo de hash usado en este caso sha512crypt |
| 2 | $RjTuGFZAt5Gz.SLy | Salt (caracteres aleatorios, necesarios para el proceso de hash). |
| 3 | $mbyEeakn29q2ThZ.mpuzC7Rvh/TtvD. | Hash de la contrasea generado a partir del primer y segundo componente |
Caducidad de la Contraseña#
El comando chage nos permite manipular los campos del archivo shadow, y este comando solo puede ser utilizado por el usuario root.
Ejemplos comando chage#
Listar configuración de caducidad de contraseña
Forzar al usuario student cambiar su contraseña en el siguiente inicio de sesión
Forzar a todos los usuarios distintos a root a cambiar su contraseñá en el siguiente inicio de sesión
for user in `awk -F: '{if ( $1 != "root" && $2 ~ /^!?[[:alnum:]./$]/ ) print $1}' /etc/shadow`
do
chage -d0 ${user}
done
Archivo /etc/login.defs#
En este archivo login.defs1 se definen las políticas de caducidad de contraseñas para los nuevos usuarios.
| Variable | Descripción |
|---|---|
| PASS_MAX_DAYS | Número máximo de días que se puede usar una contraseña. |
| PASS_MIN_DAYS | Número mínimo de días permitido entre cambios de contraseña |
| PASS_WARN_AGE | Número de días de advertencia antes de que caduque una contraseña. |
| PASS_MIN_LEN | Número mínimo de caracteres que debe tener la contraseña. |
| PASS_MAX_LEN | Número máximo de caracteres que debe tener la contraseña. |
| PASS_ALWAYS_WARN | Advierte sobre contraseñas débiles. |
| PASS_CHANGE_TRIES | Número máximo de intentos de cambiar la contraseña si se rechaza por que es demasiado "debil". |
| ENCRYPT_METHOD | Tipo de cifrado que tendrá la contraseña (SHA256 $5$ o SHA512 $6$). |
| LOGIN_RETRIES | Número máximo de reintentos de inicio de sesión en el caso de que la contraseña sea incorrecta. |
| LOGIN_TIMEOUT | Tiempo máximo en segundos para iniciar sesión |
Creación de cuentas de usuarios#
Para la creacion de cuentas de usuarios usuarios podemos utilizar el comando useradd que nos permite agregar una entrada al archivo /etc/passwd
Sintaxis#
Ejemplo#
El comando anterior agrega una cuenta de usuario de nombre student, con-s /bin/bash le asigna la shell bash y con -m crea el directorio por defecto del usuario /home/student.
Eliminación de cuentas de usuarios#
Para eliminar una cuenta de usuario podemos utilizar el comando userdel que nos permite eliminar una entrada del archivo /etc/passwd
Sintaxis#
Ejemplo#
Modificación de cuentas de usuarios#
Para modificar una cuenta de usuario podemos utilizar el comando usermod que nos permite cambiar atributos de una cuenta de usuario, como la shell asignada o su directorio por defecto editando de forma automatica el archivo /etc/passwd.
Sintaxis#
Ejemplo#
Asignanción de contraseñas#
Para asignar una contraseña a una nueva cuenta de usuario se debe realizar con el comando passwd, es importante saber que solamente el usuario root o un usuario con privilegios equivalentes a root pueden modificar las contraseñas de los demás usuarios; por el contrario un usuario sin privilegios de root puede modificar unicamente su propia contraseña.
Al momento de cambiar una contraseña pedira escribir la nueva contraseña, pero por seguridad no se vera en pantalla que es lo que estamos escribiendo también solita escribirla en una segunda ocasión para confirmar la contraseña.
Sintaxis#
Ejemplo#
passwd student
Changing password for user student.
New password:
Retype new password:
passwd: all authentication tokens updated successfully
-
https://man7.org/linux/man-pages/man5/login.defs.5.html ↩
