Saltar a contenido

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.

CADUCIDAD

Ejemplos comando chage#

Listar configuración de caducidad de contraseña

chage -l student

Forzar al usuario student cambiar su contraseña en el siguiente inicio de sesión

chage -d0 student

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#

useradd [opciones] LOGIN

Ejemplo#

useradd -m -s /bin/bash student
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#

userdel [opciones] LOGIN

Ejemplo#

userdel -r student

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#

usermod [opciones] LOGIN

Ejemplo#

usermod -c "Estudiante Edutek" student

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#

passwd [opciones] [LOGIN]

Ejemplo#

passwd student
Changing password for user student.
New password:
Retype new password:
passwd: all authentication tokens updated successfully

  1. https://man7.org/linux/man-pages/man5/login.defs.5.html