Continuemos viendo algunos otros comandos para administrar usuarios y grupos..
Con el comando
useradd [nombre_usuario] podemos crear usuarios nuevos. Al crear un usuario nuevo los campos del archivo /etc/passwd se crean con los valores default.
Algunos de estos valores default están definidos en el archivo
/etc/login.defs
Con el comando
usermod podemos modificar usuarios existentes, para ellos tenemos las siguientes opciones:
-c, --comment: Para agregar valores como el nombre completo al campo GECOS
-g, --gid: Para especificar el grupo primario del usuario
-
G, --groups: Para especificar una lista de grupos secundarios
-a, --append: Se usa con la opción -G para agregar grupos secundarios a la lista sin eliminar los existentes
-d, --home: Para especificar un nuevo directorio home para el usuario
-m, --move: Para mover el directorio home a una nueva ubicación. Debe usarse con la opción -d
-s, --shell: Para especificar una nueva shell de login para el usuario
-L, --lock: Para bloquear al usuario
-U, --unlock: Para desbloquear al usuario
Ejemplo:
usermod -aG wheel student
Con el comando
userdel [nombre_usuario] podemos eliminar usuarios del archivo /etc/passwd
Con
userdel -r también eliminamos los elementos del directorio home del usuario
Para cambiar el password de un usuario utilizamos el comando
passwd [nombre_usuario]
Los passwords para usuarios deben seguir ciertas reglas, al menos 8 caracteres, que no sean palabra de diccionario, el nombre del usuario o passwords anteriores
Como dato adicional, existen UID de usuario reservados y son los siguientes:
- 0: root
- 1-200: usuarios de sistema
- 201-999: usuarios de sistema para procesos de sistema que no son dueños de archivos en el filesystem
En el caso de los passwords, éstos están alojados en un archivo diferente a /etc/passwd, los passwords se alojan en
/etc/shadow más no en texto plano sino con un hash.
Al igual que passwd, shadow tiene campos separados por símbolos ":" y son los siguientes:
- Login Name: Debe ser una cuenta del sistema
- Password Encriptado: Es el passwords divididos en tres partes por signos de "$":
- La primera parte: Es el algoritmo utilizado para el hash. Si tenemos un 1 por ejemplo sería MD5. El 6 es un SHA-152
- Entre el segundo y el tercero símbolo de "$": Encontramos el "salt" que es una variable aleatoria utilizada para generar el hash
- En la tercer parte: Encontramos finalmente el hash encriptado
- Fecha para cambio del password
- Mínimo número de días anets de que el password tenga que ser cambiado
- Máximo número de días antes de que el password deba ser cambiado
- Periodo en días para alertar que el password va a expirar
- Número de días que una cuenta permanece activa después de que el password expiró
- La fecha de expiración de una cuenta
- Campo que no se usa actualmente (tal vez en un futuro)
Es posible cambiar éstos parámetros utilizando el comando
chage para implementar una política de password con las siguientes opciones:
-l: Para listar los parámetros que tiene configurados el usuario
-d: Fecha de expiración (con un cero forzaría a cambiar el password en el siguiente login)
-m: Mínimo de días antes de que el password sea cambiado
-M: Máximo de días antes de que el password sea cambiado
-W: Días para el warning o alertamiento
-I: Días para marcar al usuario como inactivo al expirar
-E: Fecha de expiración de una cuenta
Ejemplos:
- chage -l student
- chage -d 0 student
- chage -E 2019-02-11 student
Hay ocasiones en que creamos un usuario pero no queremos que tenga la opción de loguearse al shell, por ejemplo tal vez solo sea un usuario de correo.
En esos casos podemos crear el usuario y con el comando usermod indicar que no tendrá acceso al shell de ésta forma:
usermod -s /sbin/nologin student