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.

User Types

Usuario raíz

La root el usuario es el administrador del sistema operativo con todos los permisos para realizar operaciones. Por lo general, solo root 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 de la root usuario. 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.

Adding User

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 utiliza useradd comando en el backend cuyo uso veremos más adelante.

Dado que agregar un usuario es una tarea privilegiada, necesitaría usar sudo como prefijo y username 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 id mando.

$ 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 sistemas operativos basados ​​en RHEL y funcionará igualmente 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

La useradd El comando 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 id mando:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

Modifying User

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 CLI creado cuando un usuario inicia una nueva sesión CLI localmente o a través de SSH. La mayoría de los sistemas modernos tienen un usuario predeterminado Bash 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 ha cambiado 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 del usuario janedoe ha sido 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 le permite modificar el grupo predeterminado de un usuario usando usermod mando también. 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 usermod mando.

$ 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 gpasswd comando 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

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 usermod comando usando -l bandera:

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

Removing User

Un usuario puede ser eliminado de Linux usando userdel mando.

$ 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 cola de correo, agregue -r bandera también.

$ sudo userdel -r <username>

Específicamente para sistemas basados ​​en Ubuntu, también puede usar deluser Comando 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?