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 de este documento: Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2022 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Aún cuando se tenga un sistema con un único usuario, es importante recordar que es poco 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 pueda 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.

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.

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á 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 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 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.

Creación de grupos.

Los grupos sirven para categorizar y organizar los usuarios. Permite 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 500 —CentOS y Red Hat™ Enterprise Linux— o bien 1000 —Fedora™, openSUSE™ y SUSE™ Linux Enterprise— dependiendo del sistema operativo utilizado. 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 usuario 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

Opciones avanzadas.

Pueden utilizarse las siguientes opciones de useradd:

-c, --comment comentario
Permite establecer detalles de la cuenta de usuario. En la actualidad se utiliza para definir el nombre completo del usuario.
-d, --home directorio de inicio
Establece el directorio de inicio del usuario.
-e, --expiredate fecha de expiración
Establece la fecha de expiración de una cuenta de usuario en el formato AAAA-MM-DD.
-f, --inactive días para desactivar
Establece el número de días para desactivar una cuenta de usuario tras la expiración de una contraseña.
-g, --gid grupo principal
Establece el grupo predeterminado al cual pertenecerá el usuario. Nota: el grupo definido debe de existir previamente.
-G, --groups grupos adicionales,[...]
Establece los grupos adicionales a los que pertenecerá el usuario. Estos deben separarse utilizando una coma y sin espacios. Esto es muy conveniente cuando se desea que el usuario tenga acceso a determinados recursos del sistema, como acceso a la unidad de disquetes, administración de cuentas PPP y POP. Nota: los grupos definidos deben de existir.
-m, --create-home
Establece que el directorio de inicio del usuario debe ser creado si acaso este fuese inexistente y se copiarán dentro de este los archivos especificados en /etc/skel. Esta opción viene implícita en CentOS, Fedora™ y Red Hat™ Enterprise Linux, es decir es innecesaria, pues el archivo /etc/login.defs define la variable CREATE_HOME con el valor yes. Ejemplo:
useradd alguien
En Debian, openSUSE™, SUSE™ Linux Enterprise y Ubuntu™, es necesario utilizarla de manera explícita, siendo que de lo contrario se omitiría la creación de los directorios de inicio de los usuarios, pues el archivo /etc/login.defs define la variable CREATE_HOME con el valor no. Ejemplo:
useradd -m alguien
-M
Establece se omita crear el directorio de inicio del usuario, aún si el archivo /etc/login.defs define la variable CREATE_HOME con el valor yes. Es lo contrario de la opción -m.
-r, --system
Crea cuentas de sistema. Los usuarios de sistema serán creados sin caducidad en el archivo /etc/shadow y sus números de identidad serán asignados entre el rango de valores de la variable SYS_UID_MIN y la variable SYS_UID_MAX (100 a 499 en CentOS y Red Hat™ Enterprise Linux, 100 y 999 en Fedora™, openSUSE™ y SUSE™ Linux Enterprise) o bien como esté definido en el archivo /etc/login.defs.
-s, --shell intérprete de mandatos
Establece el intérprete de mandatos (shell) que podrá utilizar el usuario. CentOS, Red Hat™ Enterprise Linux, Fedora™, openSUSE™ y SUSE™ Linux Enterprise establecen /bin/bash como intérprete de mandatos predeterminado.
-u, --uid número de identidad de usuario
Establece el UID del usuario. Cuando se crea una cuenta de usuario por primera vez, como ocurre en CentOS y Red Hat™ Enterprise Linux, los UID se asignarán a partir del 500. Los UID entre 0 y 99 están reservados para las cuentas y grupos de los servicios del sistema. El UID 100 está reservado para el grupo users. En el caso de openSUSE™ y SUSE™ Linux Enterprise, éstos asignan los UID a partir del 1000. El rango de valores de SYS_UID_MIN-SYS_UID_MAX puede consultarse en el archivo /etc/login.defs.

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 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:

-c, --comment comentario
Cambia la descripción de la cuenta de usuario.
-d, --home directorio de inicio
Cambia el directorio de inicio del usuario.
-e, --expiredate fecha de expiración
Cambia las fecha de expiración de una cuenta de usuario en el formato AAAA-MM-DD.
-f, --inactive días para desactivar
Cambia el número de días para desactivar una cuenta de usuario tras la expiración de una contraseña.
-g, --gid grupo principal
Cambia el grupo predeterminado al cual pertenecerá el usuario. Nota: el grupo definido debe de existir previamente.
-G, --groups grupos adicionales,[...]
Cambia los grupos adicionales a los que pertenecerá el usuario. Estos deben separarse utilizando una coma y sin espacios. Nota: los grupos definidos deben de existir.
-l, --login nuevo nombre del usuario
Cambia el nombre del usuario.
-m, --move-home
Mueve el contenido del directorio de inicio del usuario cuando se ha establecido uno distinto con la opción -d.
-s, --shell intérprete de mandatos
Cambia el intérprete de mandatos (shell) que podrá utilizar el usuario.
-u, --uid número de identidad de usuario
Cambia el UID del usuario.

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:

-k
Se utiliza para indicar que la actualización de una contraseña sólo se aplique para las sesiones expiradas, sin afectar a las sesiones activas del usuario modificado.
-l
Sólo puede ser utilizada por root. Se utiliza para bloquear cuentas de usuario. El bloqueo se realiza añadiendo el símbolo ! al inicio del criptograma de la contraseña en el archivo /etc/shadow.
--stdin
Establece que passwd deberá leer el valor de la contraseña desde la entrada estándar (STDIN).
-u
Sólo puede ser utilizada por root. Revierte lo que se haya hecho con la opción -l. Es decir, desbloquea cuentas de usuario. Es decir, elimina el símbolo ! al inicio del criptograma de la contraseña en el archivo /etc/shadow
-d
Sólo puede ser utilizada por root. Elimina la contraseña de un usuario en particular, permitiendo ingresar al sistema sin contraseña.
-e
Sólo puede ser utilizada por root. Expira la contraseña del usuario, obligando a éste a asignar una nueva durante el siguiente ingreso al sistema. Esta opción fue descartada en versiones recientes de passwd en favor del uso de chage con la opción -d con el número cero como valor y el nombre del usuario como argumento. Ejemplo: chage -d 0 zutano.
-n tiempo mínimo de vida en días
Sólo puede ser utilizada por root. Establece el tiempo mínimo de vida, en días, de una contraseña.
-x tiempo máximo de vida en días
Sólo puede ser utilizada por root. Establece el tiempo máximo de vida, en días, de una contraseña.
-w número de días previos a expiración
Sólo puede ser utilizada por root. Establece el número de días, antes de que expire una contraseña, para que el usuario comience a recibir advertencias sobre la próxima expiración de su contraseña.
-i número de días tras la expiración de contraseña
Sólo puede ser utilizada por root. Establece el número de días para desactivar una cuenta de usuario tras la expiración de su contraseña.
-S
Sólo puede ser utilizada por root. Mostrará información breve acerca del estado de una contraseña para un usuario determinado.

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

Herramientas gráficas.

Si utiliza CentOS o Red Hat™ Enterprise Linux, puede gestionar las cuentas de usuarios, grupos y cambios de contraseñas utilizando la herramienta gráfica system-config-users. Puede encontrarla en el menú de SistemaAdministraciónUsuarios y grupos.

Herramienta system-config-users.
Herramienta system-config-users.

Si utiliza openSUSE™ o SUSE™ Linux Enterprise, puede gestionar las cuentas de usuarios, grupos y cambios de contraseñas utilizando el módulo users de YaST en modo texto ejecutando:

yast users

Módulo users de YaST en modo texto.
Módulo users de YaST en modo texto.

O bien haga lo mismo desde YaSTSeguridad y usuariosGestión de usuarios y grupos.

Módulo users de YaST en modo gráfico.
Módulo users de YaST en modo gráfico.

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 o Telnet y se pudo "adivinar" alguna de las contraseñas de las cuentas de usuario existentes o bien la contraseña del administrador. Si se específico 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.

Se considera como una buena contraseña aquella se compone de una combinación de números y letras mayúsculas y minúsculas y que contiene como mínimo 8 caracteres, al menos tres caracteres en mayúscula, al menos tres números y al menos tres caracteres especiales. También es posible utilizar pares de palabras con puntuación insertada y frases o secuencias de palabras o bien acrónimos de estas.

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.