La mantención de cuentas de usuarios y grupos en Linux es una tarea fundamental de cualquier administrador de sistemas. En este post mostraremos cómo crear, modificar, y eliminar cuentas de usuario y grupos de nuestro sistema Linux.
Crear usuarios y grupos en Linux
Para crear el usuario fulano, agregando el nombre completo (Fulano De Tal) en el campo comentario utilizaremos el comando usermod con la opción -c. Por defecto, también se creará el directorio home del usuario en /home/fulano y se le asignará /bin/bash como shell:
[pastacode lang=»bash» manual=»useradd%20fulano%20-c%20%22Fulano%20De%20Tal%22″ message=»» highlight=»» provider=»manual»/]
Si queremos cambiar el shell del usuario fulano a /bin/sh, el contenido del campo comentario a Fulano De Tal actualizado y el directorio home a /mnt/homes/fulano (el cual debe ser creado primero) usaremos la opción -s (cambiar shell) y -d (cambiar home), junto con -c (actualizar comentario):
[pastacode lang=»bash» manual=»mkdir%20-p%20%2Fmnt%2Fhomes%2Ffulano%0Ausermod%20-s%20%2Fbin%2Fsh%20-c%20%22Fulano%20De%20Tal%20actualizado%22%20-d%20%2Fmnt%2Fhomes%2Ffulano%20fulano» message=»» highlight=»» provider=»manual»/]
Para asignar una contraseña inicial al usuario fulano emplearemos el comando passwd. Luego de iniciar sesión por primera vez, él podrá cambiarla utilizando el mismo comando.
[pastacode lang=»bash» manual=»passwd%20fulano» message=»» highlight=»» provider=»manual»/]
Validez de cuentas de usuario
Una vez que hemos creado la cuenta de usuario, el comando chage con su opción -l nos permitirá ver información detallada sobre el período de validez de la misma (por defecto, una cuenta de usuario nunca expira) y de la contraseña. Como medida de seguridad es una buena idea requerir un cambio de clave cada cierto período de tiempo.
La salida del comando
[pastacode lang=»bash» manual=»chage%20-l%20fulano» message=»» highlight=»» provider=»manual»/]
debería ser similar al siguiente:
[root@server ~]# chage -l fulano Last password change : Jul 16, 2016 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
Ahora veremos cómo editar la cuenta de fulano de tal manera que la cuenta expire (-E) el 31 de diciembre de 2016, y mientras tanto se le permita cambiarla solamente (-m) una vez por semana (7 días). Cada contraseña será válida como máximo (-M) durante 60 días, y 3 días antes se le debe enviar un recordatorio para que la modifique (-W). Finalmente, 5 días después de la fecha de vencimiento de la contraseña se procederá a bloquear (-I) la cuenta:
[pastacode lang=»bash» manual=»chage%20-E%202016-12-31%20-m%207%20-M%2060%20-W%203%20-I%205%20fulano» message=»» highlight=»» provider=»manual»/]
Veamos el resultado nuevamente con chage:
[root@server ~]# chage -l fulano Last password change : Jul 16, 2016 Password expires : Sep 14, 2016 Password inactive : Sep 19, 2016 Account expires : Dec 31, 2016 Minimum number of days between password change : 7 Maximum number of days between password change : 60 Number of days of warning before password expires : 3
Por seguridad, podemos forzar a que fulano cambie su contraseña la próxima vez que inicie sesión:
[pastacode lang=»bash» manual=»chage%20-d%200%20fulano» message=»» highlight=»» provider=»manual»/]
Administración de grupos
En Linux, los grupos constituyen el primer método de control de acceso a los recursos del sistema (lo cual veremos más en detalle en el próximo post). Cuando se crea una cuenta de usuario, también se crea un grupo con el mismo nombre y ambos son vinculados.
Para crear un nuevo grupo adicional llamado migrupo y agregar a fulano al mismo volveremos a usar el comando usermod con sus opciones -a (append) y -G (group) seguidos por el nombre del grupo y el usuario que deseamos agregar al mismo:
[pastacode lang=»bash» manual=»groupadd%20migrupo%0Ausermod%20-a%20-G%20migrupo%20fulano» message=»» highlight=»» provider=»manual»/]
Para ver la lista de grupos a los que pertenece un determinado usuario podemos utilizar los comandos groups o id, seguido por el nombre de usuario:
[pastacode lang=»bash» manual=»groups%20fulano%0Aid%20fulano» message=»» highlight=»» provider=»manual»/]
Para remover a fulano del grupo migrupo nuevamente haremos uso de usermod -G seguido de todos los grupos a los que se desea que continúe perteneciendo el usuario salvo el indicado).
[pastacode lang=»bash» manual=»usermod%20-G%20fulano%20fulano» message=»» highlight=»» provider=»manual»/]
En la Fig. 1 podemos ver la lista de grupos a los que pertenece fulano antes y después de removerlo de migrupo:
Si lo que queremos es borrar la cuenta del usuario fulano, junto con su directorio home, la cola de correos (/var/spool/mail/fulano por defecto), y los contenidos de dichos directorios:
[pastacode lang=»bash» manual=»userdel%20-r%20fulano» message=»» highlight=»» provider=»manual»/]
Para borrar un grupo dado, utilizaremos groupdel:
[pastacode lang=»bash» manual=»groupdel%20migrupo» message=»» highlight=»» provider=»manual»/]
En el próximo post profundizaremos en el uso de grupos y de restricción de acceso a los recursos del sistema. ¡Hasta entonces!