La guía completa para el comando "useradd" en Linux: 15 ejemplos prácticos


Todos conocemos el comando más popular llamado "useradd" o "adduser" en Linux. Hay ocasiones en las que un administrador del sistema Linux solicita la creación de cuentas de usuario en Linux con algunas propiedades, limitaciones o comentarios específicos.

En Linux, un comando "useradd" es una utilidad de bajo nivel que se utiliza para agregar/crear cuentas de usuario en Linux y otros sistemas operativos similares a Unix. El "adduser" es muy similar al comando useradd, porque es solo un enlace simbólico.

En algunas otras distribuciones de Linux, el comando useradd puede venir con una versión ligeramente diferente. Le sugiero que lea su documentación antes de seguir nuestras instrucciones para crear nuevas cuentas de usuario en Linux.

Cuando ejecutamos el comando "useradd" en la terminal de Linux, realiza lo siguiente:

  1. It edits /etc/passwd, /etc/shadow, /etc/group and /etc/gshadow files for the newly created User account.
  2. Creates and populate a home directory for the new user.
  3. Sets permissions and ownerships to home directory.

La sintaxis básica del comando es:

useradd [options] username

En este artículo le mostraremos los 15 comandos useradd más utilizados con sus ejemplos prácticos en Linux. Hemos dividido la sección en dos partes, desde el uso del comando básico hasta el avanzado.

  1. Part I: Basic usage with 10 examples
  2. Part II: Advance usage with 5 examples

1. Cómo agregar un nuevo usuario en Linux

Para agregar/crear un nuevo usuario, todo lo que tiene que hacer es seguir el comando "useradd" o "adduser" con "nombre de usuario". El "nombre de usuario" es un nombre de inicio de sesión de usuario, que utiliza el usuario para iniciar sesión en el sistema.

Solo se puede agregar un usuario y ese nombre de usuario debe ser único (diferente de otro nombre de usuario que ya existe en el sistema).

Por ejemplo, para agregar un nuevo usuario llamado "tecmint", use el siguiente comando.

[[email protected] ~]# useradd tecmint

Cuando agregamos un nuevo usuario en Linux con el comando "useradd", se crea en estado bloqueado y para desbloquear esa cuenta de usuario, debemos establecer una contraseña para esa cuenta con el comando "passwd".

[[email protected] ~]# passwd tecmint
Changing password for user tecmint.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

Una vez que se crea un nuevo usuario, la entrada se agrega automáticamente al archivo "/ etc/passwd". El archivo se utiliza para almacenar información de los usuarios y la entrada debería ser.

tecmint:x:504:504:tecmint:/home/tecmint:/bin/bash

La entrada anterior contiene un conjunto de siete campos separados por dos puntos, cada campo tiene su propio significado. Veamos cuáles son estos campos:

  1. Username: User login name used to login into system. It should be between 1 to 32 charcters long.
  2. Password: User password (or x character) stored in /etc/shadow file in encrypted format.
  3. User ID (UID): Every user must have a User ID (UID) User Identification Number. By default UID 0 is reserved for root user and UID’s ranging from 1-99 are reserved for other predefined accounts. Further UID’s ranging from 100-999 are reserved for system accounts and groups.
  4. Group ID (GID): The primary Group ID (GID) Group Identification Number stored in /etc/group file.
  5. User Info: This field is optional and allow you to define extra information about the user. For example, user full name. This field is filled by ‘finger’ command.
  6. Home Directory: The absolute location of user’s home directory.
  7. Shell: The absolute location of a user’s shell i.e. /bin/bash.

2. Cree un usuario con un directorio de inicio diferente

De forma predeterminada, el comando "useradd" crea el directorio de inicio de un usuario en/directorio de inicio con nombre de usuario. Así, por ejemplo, hemos visto arriba que el directorio de inicio predeterminado para el usuario "tecmint" es "/ home/tecmint".

Sin embargo, esta acción se puede cambiar usando la opción "-d" junto con la ubicación del nuevo directorio de inicio (es decir,/data/projects). Por ejemplo, el siguiente comando creará un usuario "anusha" con un directorio de inicio "/ datos/proyectos".

[[email protected] ~]# useradd -d /data/projects anusha

Puede ver el directorio de inicio del usuario y otra información relacionada con el usuario, como identificación de usuario, identificación de grupo, shell y comentarios.

[[email protected] ~]# cat /etc/passwd | grep anusha

anusha:x:505:505::/data/projects:/bin/bash

3. Cree un usuario con un ID de usuario específico

En Linux, cada usuario tiene su propio UID (Número de identificación único). De forma predeterminada, cada vez que creamos una nueva cuenta de usuario en Linux, asigna el ID de usuario 500, 501, 502 y así sucesivamente ...

Pero podemos crear un usuario con un ID de usuario personalizado con la opción "-u". Por ejemplo, el siguiente comando creará un usuario "navin" con un ID de usuario personalizado "999".

[[email protected] ~]# useradd -u 999 navin

Ahora, verifiquemos que el usuario creó con un ID de usuario definido (999) usando el siguiente comando.

[[email protected] ~]# cat /etc/passwd | grep navin

navin:x:999:999::/home/navin:/bin/bash

NOTA: Asegúrese de que el valor de una ID de usuario debe ser exclusivo de cualquier otro usuario ya creado en el sistema.

4. Cree un usuario con un ID de grupo específico

Del mismo modo, cada usuario tiene su propio GID (Número de identificación de grupo). También podemos crear usuarios con ID de grupo específicos con la opción -g.

Aquí en este ejemplo, agregaremos un usuario "tarunika" con un UID y GID específicos simultáneamente con la ayuda de las opciones "-u" y "-g".

[[email protected] ~]# useradd -u 1000 -g 500 tarunika

Ahora, vea el ID de usuario asignado y el ID de grupo en el archivo "/ etc/passwd".

[[email protected] ~]# cat /etc/passwd | grep tarunika

tarunika:x:1000:500::/home/tarunika:/bin/bash

5. Agregar un usuario a varios grupos

La opción "-G" se utiliza para agregar un usuario a grupos adicionales. Cada nombre de grupo está separado por una coma, sin espacios intermedios.

En este ejemplo, agregamos un usuario "tecmint" en varios grupos, como administradores, webadmin y desarrollador.

[[email protected] ~]# useradd -G admins,webadmin,developers tecmint

A continuación, verifique que los múltiples grupos asignados al usuario con el comando id.

[[email protected] ~]# id tecmint

uid=1001(tecmint) gid=1001(tecmint)
groups=1001(tecmint),500(admins),501(webadmin),502(developers)
context=root:system_r:unconfined_t:SystemLow-SystemHigh

6. Agregar un usuario sin directorio de inicio

En algunas situaciones, en las que no queremos asignar un directorio de inicio a un usuario, debido a algunas razones de seguridad. En tal situación, cuando un usuario inicia sesión en un sistema que se acaba de reiniciar, su directorio de inicio será raíz. Cuando dicho usuario usa el comando su, su directorio de inicio de sesión será el directorio de inicio del usuario anterior.

Para crear usuarios sin sus directorios de inicio, se utiliza "-M". Por ejemplo, el siguiente comando creará un usuario "shilpi" sin un directorio de inicio.

[[email protected] ~]# useradd -M shilpi

Ahora, verifiquemos que el usuario se creó sin el directorio de inicio, usando el comando ls.

[[email protected] ~]# ls -l /home/shilpi

ls: cannot access /home/shilpi: No such file or directory

7. Cree un usuario con fecha de vencimiento de la cuenta

De forma predeterminada, cuando agregamos un usuario con el comando "useradd", la cuenta de usuario nunca caduca, es decir, su fecha de caducidad se establece en 0 (significa que nunca caduca).

Sin embargo, podemos establecer la fecha de caducidad usando la opción "-e", que establece la fecha en formato AAAA-MM-DD. Esto es útil para crear cuentas temporales durante un período de tiempo específico.

En este ejemplo, creamos un usuario "aparna" con la fecha de vencimiento de la cuenta, es decir, el 27 de abril de 2014 en formato AAAA-MM-DD.

[[email protected] ~]# useradd -e 2014-03-27 aparna

A continuación, verifique la antigüedad de la cuenta y la contraseña con el comando "chage" para el usuario "aparna" después de configurar la fecha de vencimiento de la cuenta.

[[email protected] ~]# chage -l aparna

Last password change						: Mar 28, 2014
Password expires						: never
Password inactive						: never
Account expires							: Mar 27, 2014
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

8. Cree un usuario con fecha de vencimiento de la contraseña

El argumento "-f" se utiliza para definir el número de días después de que caduca una contraseña. Un valor de 0 inactiva la cuenta de usuario tan pronto como expire la contraseña. De forma predeterminada, el valor de caducidad de la contraseña establecido en -1 significa que nunca caducará.

En este ejemplo, estableceremos una fecha de caducidad de la contraseña de la cuenta, es decir, 45 días en un usuario "tecmint" utilizando las opciones "-e" y "-f".

[[email protected] ~]# useradd -e 2014-04-27 -f 45 tecmint

9. Agregar un usuario con comentarios personalizados

La opción "-c" le permite agregar comentarios personalizados, como el nombre completo del usuario, el número de teléfono, etc. al archivo/etc/passwd. El comentario se puede agregar como una sola línea sin espacios.

Por ejemplo, el siguiente comando agregará un usuario "mansi" e insertará el nombre completo de ese usuario, Manis Khurana, en el campo de comentarios.

[[email protected] ~]# useradd -c "Manis Khurana" mansi

Puede ver sus comentarios en el archivo "/ etc/passwd" en la sección de comentarios.

[[email protected] ~]# tail -1 /etc/passwd

mansi:x:1006:1008:Manis Khurana:/home/mansi:/bin/sh

10. Cambiar shell de inicio de sesión de usuario:

A veces, agregamos usuarios que no tienen nada que ver con el shell de inicio de sesión o, a veces, necesitamos asignar diferentes shells a nuestros usuarios. Podemos asignar diferentes shells de inicio de sesión a cada usuario con la opción "-s".

En este ejemplo, se agregará un usuario "tecmint" sin shell de inicio de sesión, es decir, shell "/ sbin/nologin".

[[email protected] ~]# useradd -s /sbin/nologin tecmint

Puede comprobar el shell asignado al usuario en el archivo "/ etc/passwd".

[[email protected] ~]# tail -1 /etc/passwd

tecmint:x:1002:1002::/home/tecmint:/sbin/nologin

11. Agregar un usuario con un directorio de inicio específico, un shell predeterminado y un comentario personalizado

El siguiente comando creará un usuario "ravi" con el directorio de inicio "/ var/www/tecmint", shell predeterminado/bin/bash y agrega información adicional sobre el usuario.

[[email protected] ~]# useradd -m -d /var/www/ravi -s /bin/bash -c "TecMint Owner" -U ravi

En el comando anterior, la opción "-m -d" crea un usuario con el directorio de inicio especificado y la opción "-s" establece el shell predeterminado del usuario, es decir,/bin/bash. La opción "-c" agrega la información adicional sobre el usuario y el argumento "-U" crea/agrega un grupo con el mismo nombre que el usuario.

12. Agregue un usuario con directorio de inicio, shell personalizado, comentario personalizado y UID / GID

El comando es muy similar al anterior, pero aquí definimos shell como "/ bin/zsh" y UID y GID personalizados para un usuario "tarunika". Donde "-u" define el UID del nuevo usuario (es decir, 1000) y mientras que "-g" define el GID (es decir, 1000).

[[email protected] ~]# useradd -m -d /var/www/tarunika -s /bin/zsh -c "TecMint Technical Writer" -u 1000 -g 1000 tarunika

13. Agregar un usuario con directorio de inicio, sin shell, comentario personalizado e ID de usuario

El siguiente comando es muy similar a los dos comandos anteriores, la única diferencia está aquí, que deshabilitamos el shell de inicio de sesión para un usuario llamado "avishek" con un ID de usuario personalizado (es decir, 1019).

Aquí la opción '-s' agrega el shell/bin/bash predeterminado, pero en este caso configuramos el inicio de sesión en '/ usr/sbin/nologin'. Eso significa que el usuario "avishek" no podrá iniciar sesión en el sistema.

[[email protected] ~]# useradd -m -d /var/www/avishek -s /usr/sbin/nologin -c "TecMint Sr. Technical Writer" -u 1019 avishek

14. Agregar un usuario con directorio de inicio, shell, Skell / comentario personalizado e ID de usuario

El único cambio en este comando es que usamos la opción "-k" para configurar el directorio de esqueleto personalizado, es decir, /etc/custom.skell, no el predeterminado/etc/skel. También usamos la opción "-s" para definir un shell diferente, es decir,/bin/tcsh para el usuario "navin".

[[email protected] ~]# useradd -m -d /var/www/navin -k /etc/custom.skell -s /bin/tcsh -c "No Active Member of TecMint" -u 1027 navin

15. Agregar un usuario sin directorio de inicio, sin shell, sin grupo y comentario personalizado

Este siguiente comando es muy diferente a los otros comandos explicados anteriormente. Aquí usamos la opción "-M" para crear un usuario sin el directorio de inicio del usuario y se usa el argumento "-N" que le dice al sistema que solo cree el nombre de usuario (sin grupo). Los argumentos "-r" son para crear un usuario del sistema.

[[email protected] ~]# useradd -M -N -r -s /bin/false -c "Disabled TecMint Member" clayton

Para obtener más información y opciones sobre useradd, ejecute el comando "useradd" en la terminal para ver las opciones disponibles.

Lea también : 15 ejemplos de comandos de usermod