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. Edita los archivos/etc/passwd,/etc/shadow,/etc/group y/etc/gshadow para la cuenta de usuario recién creada.
  2. Crea y completa un directorio de inicio para el nuevo usuario.
  3. Establece permisos y propiedades para el directorio de inicio.

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. Parte I: uso básico con diez ejemplos
  2. Parte II: uso avanzado con 5 ejemplos

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, necesitamos 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. Nombre de usuario: nombre de inicio de sesión del usuario que se utiliza para iniciar sesión en el sistema. Debe tener entre 1 y 32 caracteres.
  2. Contraseña: contraseña de usuario (o carácter x) almacenada en el archivo/etc/shadow en formato cifrado.
  3. ID de usuario (UID): cada usuario debe tener un número de identificación de usuario de ID de usuario (UID). De forma predeterminada, el UID 0 está reservado para el usuario raíz y los UID que van del 1 al 99 están reservados para otras cuentas predefinidas. Otros UID que van del 100 al 999 están reservados para grupos y cuentas del sistema.
  4. ID de grupo (GID): el número de identificación de grupo de ID de grupo principal (GID) almacenado en el archivo/etc/group.
  5. Información del usuario: este campo es opcional y le permite definir información adicional sobre el usuario. Por ejemplo, nombre completo del usuario. Este campo se completa con el comando "dedo".
  6. Directorio de inicio: la ubicación absoluta del directorio de inicio del usuario.
  7. Shell: la ubicación absoluta del shell de un usuario, es decir,/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 el 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 la identificación del usuario, la identificación del grupo, el shell y los 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). Podemos crear usuarios con ID de grupo específicos y 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, estamos agregando 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 directorios de inicio a los de 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 caducó).

Sin embargo, podemos establecer la fecha de vencimiento 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 la contraseña haya caducado. 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".

Aquí, 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. Agregue 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 personalizado/comentario 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