La gestión de usuarios en cualquier sistema operativo es una de las tareas rutinarias básicas de un administrador de sistemas.
Para un sistema operativo basado en Linux, generalmente implica crear cuentas de usuario, modificar cuentas existentes, como cambiar su directorio de inicio, shell predeterminado, bloquear/desbloquear una o más cuentas y eliminar cuentas de usuario.
Antes de investigar los comandos y procesos para llevar a cabo estas tareas, profundicemos brevemente en cómo se pueden clasificar las cuentas de usuario en Linux. Además, tenga en cuenta que, a menos que se especifique explícitamente, los comandos dados funcionarán en la mayoría de las distribuciones comunes de Linux.
Tabla de contenido
Tipos de usuarios
Usuario raíz
El usuario raíz es el administrador del sistema operativo con todos los permisos para realizar operaciones. Por lo general, solo la raíz puede instalar/desinstalar o actualizar bibliotecas y programas básicos del sistema. Es la única cuenta de usuario con privilegios en todo el sistema.
Entonces, el usuario root es el usuario más poderoso del sistema.
Usuario especial
Estos son los usuarios sin inicios de sesión. No tienen todos los privilegios del usuario raíz. Dependiendo de la cuenta, asumen diferentes roles especializados.
Estos se crean automáticamente en el momento de la instalación de cualquier aplicación. bin, sync, lp, mail, operator, squid son algunos de los ejemplos de usuarios especiales.
Usuarios comunes
Los usuarios comunes tienen privilegios completos solo en su directorio de trabajo, generalmente su directorio de inicio. No tienen privilegios para administrar el sistema o instalar el software. No pueden realizar estas tareas sin tener privilegios especiales a través de sudo.
Agregar usuario
Debian/Ubuntu
En un sistema basado en Debian o Ubuntu, hay un par de opciones para agregar usuarios desde la CLI. El primer comando es adduser, que es un script de Perl y usa el comando useradd en el backend, cuyo uso veremos más adelante.
Dado que agregar un usuario es una tarea privilegiada, deberá usar sudo como prefijo y nombre de usuario como argumento. Se pueden especificar otros detalles cuando se le solicite. A excepción del nombre de usuario y la contraseña, el resto de los detalles son opcionales. Podemos verificar que el usuario ha sido creado usando el comando id.
$ sudo adduser johndoe Adding user `johndoe' ... Adding new group `johndoe' (1003) ... Adding new user `johndoe' (1003) with group `johndoe' ... Creating home directory `/home/johndoe' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for johndoe Enter the new value, or press ENTER for the default Full Name []: John Doe Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y $ $ id johndoe uid=1003(johndoe) gid=1003(johndoe) groups=1003(johndoe) $
CentOS/RHEL/Fedora (incluido Debian/Ubuntu)
El siguiente comando, useradd, funcionará en distribuciones de SO basadas en RHEL y funcionará igual de bien en hosts Ubuntu/Debian. La sintaxis más simple (sin opciones adicionales) para crear un nuevo usuario es:
$ sudo useradd <username>
Ejemplo:
$ sudo useradd janedoe
El comando useradd admite varias opciones que se pueden especificar al crear el usuario, siendo las más comunes la ID de usuario (UID), la ID de grupo (GID), el shell predeterminado y el directorio de inicio, etc. A continuación se proporciona un ejemplo de este tipo:
$ sudo useradd -s /bin/sh -d /data/newhome -c "Jane Doe" -u 1005 janedoe
Puede verificar el usuario recién creado usando el comando id:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $
Modificando Usuario
A menudo, es necesario modificar alguna propiedad de los usuarios existentes en función de los requisitos de la organización, las solicitudes de los usuarios o las migraciones del sistema. La mayoría de estas propiedades son fáciles de modificar, aunque debemos asegurarnos de cómo afectará el entorno del usuario y el acceso a los archivos que el usuario posee o a los que accede.
Concha predeterminada
El shell predeterminado es el shell de la CLI que se crea cuando un usuario inicia una nueva sesión de la CLI, ya sea localmente o a través de SSH. La mayoría de los sistemas modernos tienen un Bash de usuario predeterminado, aunque puede variar según la distribución de Linux o el entorno del usuario. Para modificar el shell predeterminado de un usuario, use:
$ sudo usermod -s <shell> <username>
Ejemplo:
$ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/sh $ sudo usermod -s /bin/bash janedoe $ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/bash $
Como puede ver en el resultado anterior, el shell se cambió de /bin/sh a /bin/bash para el usuario janedoe.
Directorio de inicio
Al igual que el shell predeterminado, el directorio de inicio de un usuario se puede modificar a una ubicación diferente usando:
$ sudo usermod -d <new_directory_path> <username>
En el siguiente ejemplo, el directorio de inicio del usuario janedoe se ha cambiado a /data/janedoe:
$ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/bash $ sudo usermod -d /data/janedoe janedoe $ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $
Antes de realizar el cambio, asegúrese de que el nuevo directorio tenga la propiedad y los permisos correctos. De lo contrario, el usuario puede tener problemas durante el inicio de sesión o al trabajar en el nuevo directorio de inicio.
ID de usuario
Puede cambiar la identificación de usuario de un usuario existente usando:
$ sudo usermod -u <new_uid> <username>
Ejemplo:
$ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $ sudo usermod -u 1010 janedoe $ getent passwd janedoe janedoe:x:1010:1005::/data/janedoe:/bin/bash $
Nuevamente, cambiar el UID cambia la forma en que el sistema de archivos de Linux asigna la propiedad y el permiso a un archivo o directorio. Asegúrese de que el directorio de inicio del usuario y su contenido y todos los demás archivos en cualquier parte del sistema, originalmente propiedad del usuario (con UID anterior), se cambien a UID asignado. No hacerlo puede causar problemas en la sesión CLI y el acceso a los archivos por parte del usuario.
Grupo predeterminado
El grupo predeterminado suele ser el ID de grupo predeterminado del usuario, que se crea durante la creación del usuario a menos que se especifique otro GID. Linux también le permite modificar el grupo predeterminado de un usuario usando el comando usermod. Aquí está la sintaxis a usar:
$ sudo usermod -g <new_gid or group_name> <username>
Aquí hay un ejemplo:
$ getent passwd janedoe janedoe:x:1010:1005::/data/janedoe:/bin/bash $ sudo usermod -g 1001 janedoe $ getent passwd janedoe janedoe:x:1010:1001::/data/janedoe:/bin/bash $
Nuevamente, asegúrese de que la nueva ID de grupo esté configurada en el directorio de inicio del usuario, el contenido y todos los demás archivos o directorios aplicables para migrar correctamente sus permisos de propiedad.
Adición/eliminación de grupos
Además del grupo predeterminado, un usuario en Linux puede formar parte de grupos secundarios. Siempre podemos agregar o eliminar grupos adicionales a los que pertenece un usuario usando el comando usermod.
$ sudo usermod -a -G <group_id or group_name> <username>
Ejemplo:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo usermod -a -G docker janedoe $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker) $
De manera similar, para eliminar un usuario de uno de los grupos secundarios, use el comando gpasswd como se muestra a continuación:
$ sudo gpasswd -d <username> <groupname>
Ejemplo:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker) $ sudo gpasswd -d janedoe docker Removing user janedoe from group docker $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $
Comentario de GECOS
El campo GECOS en /etc/passwd contiene información o comentarios del usuario. Podemos modificar esta información para un usuario existente como:
$ sudo usermod -c <comment> <username>
Ejemplo:
$ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $ sudo usermod -c "Jane Doe - System Admin" janedoe $ getent passwd janedoe janedoe:x:1005:1005:Jane Doe - System Admin:/data/janedoe:/bin/bash $
Tenga en cuenta que si su comentario o detalles de usuario contienen espacios, incluya ese campo entre comillas como se hizo en el ejemplo anterior.
Nombre de inicio de sesión
El nombre de inicio de sesión del usuario también se puede cambiar usando el comando usermod usando el indicador -l:
$ sudo usermod -l <new_username> <old_username>
Ejemplo:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo usermod -l jane_doe janedoe $ id jane_doe uid=1005(jane_doe) gid=1005(janedoe) groups=1005(janedoe) $
Recuerde actualizar las referencias de usuario según el nuevo nombre siempre que se use. Incluso en comandos como id, se debe especificar el nuevo nombre de usuario.
Eliminando usuario
Se puede eliminar un usuario de Linux usando el comando userdel.
$ sudo userdel <username>
Ejemplo:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo userdel janedoe $ id janedoe id: ‘janedoe’: no such user $
Para eliminar un usuario junto con su directorio de inicio y la cola de correo, agregue también el indicador -r.
$ sudo userdel -r <username>
Específicamente para los sistemas basados en Ubuntu, también puede usar el comando deluser para eliminar un usuario:
$ sudo deluser <username>
Del mismo modo, para eliminar el directorio de inicio y la cola de correo, utilice:
$ sudo deluser --remove-home <username>
Para obtener información detallada y otras opciones admitidas, consulte la página principal de varios comandos mediante:
$ man adduser $ man useradd $ man usermod $ man deluser $ man userdel
Conclusión
Este artículo mostró varios aspectos de la gestión de usuarios en un sistema Linux. Esto incluye una explicación de varias categorías de usuarios y cómo agregarlos y eliminarlos. También cubre varias opciones que ayudan a modificar los parámetros de un usuario existente. Aunque no cubre todas las posibilidades admitidas por varios comandos, cubre muchas tareas de administración comunes que un administrador de sistemas encontrará en el trabajo diario.
También te puede interesar leer: ¿Cómo eliminar archivos y directorios en Linux?