Gestión de cuentas de usuario

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org

Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.

Introducción

Aún cuando se tenga un sistema con un único usuario, es importante recordar que dista de ser conveniente realizar el trabajo diario utilizando la cuenta del usuario root. Ésta sólo debe utilizarse para realizar las tareas de administración del sistema.

Una cuenta de usuario regular tiene las restricciones necesarias para impedir que se ejecute algo capaz de dañar al sistema, se altere accidentalmente la configuración de éste, los servicios que trabajan en segundo plano o bien los permisos y ubicación de los archivos y directorios de sistema, etc. Sólo el usuario root tiene privilegios, sin restricciones, sobre el sistema. Para realizar tareas administrativas de forma segura como usuario regular, se recomienda utilizar sudo. Puede aprender más sobre su configuración en el manual Configuración y uso de sudo.

Procedimientos

La gestión de cuentas usuarios se realiza a través de useradd, passwd, usermod, groupadd y groupmod.

Gestión de cuentas de usuario

La gestión de usuarios es fundamental para mantener la seguridad y organización de un sistema. Comprender los procedimientos básicos y avanzados permite administrar eficientemente los accesos y permisos.

Creación de cuentas de usuario

La forma más simple de crear una cuenta de usuario es utilizando useradd con la opción -m (crear automáticamente directorio de inicio) y el nombre del usuario como argumento para crear una nueva cuenta de usuario. Ejemplo:

useradd -m pruebas

El nuevo usuario creado tendrá un directorio de inicio dentro de /home denominado igual que el nombre de éste, se creará automáticamente un grupo con el mismo nombre, se asignará al usuario un UID ―User Identification― con un número a partir del 1000 y utilizará /bin/bash como intérprete de mandatos.

Asignación o cambio de contraseñas

Si la cuenta del usuario carece de contraseña, ésta automáticamente está deshabilitada.

Para asignar una contraseña ejecute passwd con el nombre del usuario como argumento. Ejemplo:

passwd pruebas

El sistema solicitará que ingrese la nueva contraseña para el usuario y que repita ésta para confirmar. Jamás se mostrarán los caracteres ingresados en pantalla. Si se sospecha que se cometieron errores de tecleado, puede presionarse la tecla de retroceso las veces que sean necesarias y repetir todo lo que sea necesario antes de pulsar la tecla ENTER. El sistema siempre le informará si falla la confirmación de la contraseña.

Sólo se permite al usuario root asignar contraseñas débiles y mostrará siempre una advertencia en estos casos. Los usuarios regulares que realizan un cambio de contraseña, están obligados a definir siempre una que sea segura y que excluya palabras incluidas en los diccionarios del sistema.

Eliminación de cuentas de usuario

Ejecute userdel con un nombre de usuario como argumento para eliminar éste. Ejemplo:

userdel pruebas

Ejecute userdel con la opción -r y el nombre del usuario como argumento para eliminar también el directorio de inicio ―junto con su contenido― y el buzón de correo correspondiente. Ejemplo:

userdel -r pruebas

Gestión de grupos

Los grupos permiten organizar a los usuarios y asignar permisos de manera colectiva, simplificando la administración del sistema.

Creación de grupos

Los grupos sirven para categorizar y organizar los usuarios. Permiten aplicar permisos a grupos que son heredados por los usuarios que formen parte de éstos. Hay grupos de usuarios y grupos de sistema. Los primeros están conformados por usuarios regulares y utilizan un número de GID ―group identification― arriba del 1000. Los grupos de sistema son aquellos utilizados por programas y servicios y utilizan un número de GID menor a 1000.

Ejecute groupadd y un nombre como argumento para crear un grupo de usuarios. Ejemplo:

groupadd grupo-que-sea

Creación de grupos de sistema

Un grupo de sistema es aquel que tiene un número de identidad de grupo ―GID― por debajo del 1000. El número de identidad de grupo siempre se asigna automáticamente, utilizando el valor consecutivo más bajo que esté disponible en el sistema.

Ejecute groupadd con la opción -r y un nombre como argumento para crear un grupo de sistema. Ejemplo:

groupadd -r grupo-que-sea

Eliminación de grupos

Simplemente ejecute groupdel con el nombre del grupo como argumento para eliminar éste. Ejemplo:

groupdel grupo-que-sea

Asignación de usuarios existentes a grupos existentes

Ejecute usermod con la opción -G con el nombre del grupo y el nombre del usuario como argumentos ―en ese orden. Ejemplo:

usermod -G grupo-que-sea usuario-que-sea

O bien ejecute gpasswd con la opción -a y el nombre del usuario seguido por el nombre del grupo como argumentos. Ejemplo:

gpasswd -a usuario-que-sea grupo-que-sea

Puede agregar varios usuarios simultáneamente ejecutando gpasswd con la opción -M y una lista de usuarios separada por comas. Ejemplo:

gpasswd -M usuario1,usuario2,usuario3 grupo-que-sea

Para eliminar al usuario del grupo ejecute gpasswd con la opción -d y el nombre del usuario seguido por el nombre del grupo como argumentos. Ejemplo:

gpasswd -d usuario-que-sea grupo-que-sea

Puede definir un usuario regular para que administre el grupo ejecutando gpasswd con la opción -A y el nombre del usuario seguido por el nombre del grupo como argumentos. Ejemplo:

gpasswd -A usuario-que-sea grupo-que-sea

Puede añadir una contraseña para administrar el grupo ejecutando gpasswd y el nombre del grupo como argumento. Ejemplo:

gpasswd grupo-que-sea

Ejecute gpasswd y el nombre del grupo como argumento para eliminar la contraseña. Ejemplo:

gpasswd -r grupo-que-sea

Configuración por defecto para el alta de cuentas

El comportamiento predeterminado del mandato useradd se controla mediante el archivo /etc/default/useradd y la plantilla de directorios /etc/skel. Configurar estos valores adecuadamente puede ahorrar tiempo y garantizar coherencia en la creación de cuentas.

Archivo /etc/default/useradd

Como root edite el archivo /etc/default/useradd:

vim /etc/default/useradd

Encontrará, invariablemente, el siguiente contenido:

# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

Puede cambiar los valores que considere convenientes.

Variable HOME: El directorio de inicio del usuario será creado dentro de /home, de acuerdo a como se estipula en el Estándar de Jerarquía de Sistema de Archivos o FHS (Filesystem Hierarchy Standard). El valor de esta variable puede ser cambiado de acuerdo a las necesidades o preferencias del administrador.

Variable SHELL: El intérprete de mandatos a utilizar para las nuevas cuentas que sean creadas en adelante se define a través de la variable SHELL. De modo predeterminado el sistema asigna /bin/bash como intérprete de mandatos; si el sistema se utiliza como servidor, lo más conveniente es asignar otro valor predeterminado.

El valor más conveniente para la variable SHELL es /sbin/nologin, el cual es un programa que de forma cortés rechaza el ingreso del usuario al sistema (login). Muestra brevemente un mensaje respecto a que la cuenta está desactivada (o bien cualquier mensaje que se defina en el archivo /etc/nologin.txt) y obliga a una salida. Suele utilizarse como reemplazo del intérprete de mandatos regular para cuentas de usuario que han sido desactivadas o bien a las cuales se quiere impedir el acceso hacia un intérprete de mandatos. Este programa registra todo intento de acceso en el registro (log) general del sistema, almacenado en el archivo /var/log/messages. Para utilizarlo como valor predeterminado para la variable SHELL, sólo hay que cambiar SHELL=/bin/bash por SHELL=/sbin/nologin.

# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/sbin/nologin
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

Una vez terminada la edición, en adelante todo nuevo usuario que sea dado de alta en el sistema con el mandato useradd, sin definir parámetro alguno, de modo predeterminado se le impedirá el acceso al sistema a través de una consola o terminal. Los usuarios con estas características podrán, sin embargo, utilizar cualquier otro servicios como FTP, correo o Samba sin problema alguno.

Los posibles valores para la variable SHELL pueden ser:

Directorio /etc/skel

De modo predeterminado las cuentas de usuario del sistema utilizarán como plantilla al directorio /etc/skel para crear el directorio de inicio de todos los usuarios del sistema. En sistemas basados sobre AlmaLinux, Rocky Linux y Red Hat Enterprise Linux, regularmente y como mínimo, el directorio /etc/skel incluye los siguientes archivos:

.bash_logout .bash_profile .bashrc

Si, por ejemplo, se desea que cada nueva cuenta de usuario incluya un directorio subordinado para carpetas de correo electrónico y además el archivo para la suscripción de éstas a través del servicio de IMAP, se debe realizar el siguiente procedimiento:

mkdir -m 0700 /etc/skel/Maildir

Esto creará un directorio Maildir que será copiado al directorio de inicio de cada nuevo usuario, siguiendo la configuración común utilizada en clases para temas de correo electrónico.

Opciones avanzadas

Pueden utilizarse las siguientes opciones de useradd:

Ejemplo:

useradd -c "Fulano de tal" \
    -u 1000 -m -d /home/pruebas \
    -G tape,lp \
    pruebas

Lo anterior creará una cuenta de usuario llamada pruebas, que se encuentra incluido en los grupos tape y lp, que tendrá un UID=1000, utilizará /bin/bash como intérprete de mandatos y utilizará /home/pruebas como directorio de inicio.

La descripción completa de opciones para useradd puede consultarse en la página de manual correspondiente.

man 8 useradd

Para modificar una cuenta de usuario existente, se utiliza usermod, el cual tiene las siguientes opciones que son similares a las de useradd:

Ejemplo:

usermod -c "Alguien" \
    -s /bin/zsh \
    -u 1001 -m -d /home/alguien \
    -l alguien \
    pruebas

Lo anterior cambiará la cuenta del usuario llamada pruebas para que adelante tenga como descripción «Alguien», tenga el UID=1001, utilice /bin/zsh como intérprete de mandatos y cambie su directorio de inicio con todo su contenido a /home/alguien.

La descripción completa de opciones para usermod puede consultarse en la página de manual correspondiente.

man 8 usermod

Pueden utilizarse las siguientes opciones de passwd:

Ejemplo:

passwd -n 60 -x 90 -w 10 -i 5 pruebas

Lo anterior establece que la contraseña del usuario pruebas tendrá un tiempo de vida mínimo de 60 días, un tiempo máximo de vida de 90 días, comenzando a recibir advertencias 10 días antes de que expire su contraseña y desactivando la cuenta 5 días después de que caduque la contraseña en el caso de que el usuario hubiese omitido cambiarla.

La descripción completa de opciones para passwd puede consultarse en la página de manual correspondiente.

man 1 passwd

Ejercicio práctico: Creando cuentas de usuario

A continuación se crearán algunos grupos y cuentas de usuario con diversas características para practicar los conceptos aprendidos.

Procedimientos

  1. Genere al usuario denominado «fulano», definiendo /bin/bash como intérprete de mandatos, UID «1001», directorio de inicio /home/fulano (valor predeterminado) y grupo principal fulano (valores predeterminados):

    useradd --uid 1001 -m -s /bin/bash -c "Fulano de Tal" fulano

    Asigne contraseña al usuario «fulano»:

    passwd fulano
  2. Genere al usuario denominado «mengano», definiendo /dev/null como intérprete de mandatos, definiendo el directorio de inicio /home/mengano (valor predeterminado) y grupo principal mengano (valores predeterminados):

    useradd -m -s /dev/null -c "Mengano de Tal" mengano

    Asigne contraseña al usuario «mengano»:

    passwd mengano
  3. Genere el grupo denominado «desarrollo» con GID 1003:

    groupadd --gid 1003 desarrollo
  4. Genere el grupo denominado «servicio» como grupo de sistema:

    groupadd -r servicio
  5. Genere al usuario denominado «perengano», definiendo /sbin/nologin como intérprete de mandatos, definiendo el directorio de inicio /home/perengano (valor predeterminado), con grupo principal desarrollo y grupo adicional servicio:

    useradd -m -s /sbin/nologin \
        -g desarrollo -G servicio \
        -c "Perengano de Tal" perengano

    Asigne contraseña al usuario perengano:

    passwd perengano
  6. Genere al usuario denominado «zutano», definiendo /bin/bash como intérprete de mandatos, definiendo el directorio de inicio /home/zutano (valor predeterminado), con grupo principal servicio y grupo adicional desarrollo:

    useradd -m -s /bin/bash \
        -g servicio -G desarrollo \
        -c "Zutano de Tal" zutano

    Asigne contraseña al usuario «zutano»:

    passwd zutano

    Haga caducar la contraseña del usuario «zutano»:

    chage -d 0 zutano

    Lo anterior forzará el cambio de la contraseña con el siguiente acceso de zutano.

  7. Visualice el contenido de los archivos /etc/group, /etc/passwd y /etc/shadow y compare y determine las diferencias entre los grupos «desarrollo» y «servicio» y los usuarios «fulano», «mengano», «perengano» y «zutano».

    tail -2 /etc/group
    tail -4 /etc/passwd
    tail -4 /etc/shadow
  8. Pulse CTRL+ALT+F2 (máquinas reales) o CTRL (derecho)+F2 (Máquinas virtuales con VirtualBox) e ingrese como fulano.

  9. Pulse CTRL+ALT+F3 (máquinas reales) o CTRL (derecho)+F3 (Máquinas virtuales con VirtualBox) e intente ingresar como mengano. Debe denegarse el acceso.

  10. Intente ingresar como perengano. Debe denegarse el acceso.

  11. Ingrese como zutano. Se solicitará ingresar de nuevo la contraseña actual y luego se solicitará ingresar una nueva contraseña con confirmación. La nueva contraseña deberá excluir palabras de diccionarios.

  12. Compare resultados y haga conclusiones.

Este ejercicio le permitirá observar de primera mano el efecto de configurar diferentes intérpretes de mandatos (/bin/bash, /dev/null, /sbin/nologin) y la gestión de grupos primarios y adicionales.

Herramientas gráficas

Si utiliza un entorno de escritorio, los entornos modernos como GNOME, Cinnamon, MATE Desktop (con mate-user-admin), KDE Plasma y Xfce (también a través de mate-user-admin) incluyen aplicaciones gráficas para gestionar usuarios y grupos. Estas herramientas suelen utilizar el servicio accountsservice (D-Bus) para realizar cambios, lo que las hace compatibles entre diferentes entornos.

Sin embargo, es fundamental familiarizarse con los mandatos de consola, ya que son universales y están disponibles en cualquier instalación, incluso sin interfaz gráfica. En distribuciones modernas como AlmaLinux, Rocky Linux o RHEL 8/9/10, la administración mediante la línea de mandatos con useradd, usermod, passwd y groupadd es el método recomendado y más potente.

Nota: En sistemas que utilizan ALDOS —que utiliza Xfce como escritorio predeterminado— puede utilizar la herramienta de MATE mate-user-admin que está instalada de modo predeterminado.

Comentarios finales acerca de la seguridad

Cuando un intruso consigue infiltrarse en un sistema es generalmente debido a que se realizó una conexión a través de SSH y se pudo «adivinar» alguna de las contraseñas de las cuentas de usuario existentes o bien la contraseña del administrador. Si se especificó una mala contraseña de root durante el proceso de instalación del sistema operativo, algo muy común entre usuarios novicios, es muy probable que ésta sea vulnerada en pocas horas (e incluso minutos) después de conectarse a Internet.

Recomendaciones para contraseñas seguras

El panorama moderno de amenazas

Se considera como una buena contraseña aquella que se compone de una combinación de números y letras mayúsculas y minúsculas y que contiene como mínimo 12 caracteres, e incluye caracteres especiales. Sin embargo, el panorama de seguridad evoluciona:

Conclusión

Observar estas recomendaciones, principalmente en sistemas con acceso a redes locales y/o públicas, como Internet, hará que el sistema sea más seguro. La gestión consciente y cuidadosa de cuentas de usuario y grupos es la primera línea de defensa para cualquier sistema.

Bibliografía