useradd
El comando useradd es una herramienta de línea de comandos utilizada en Linux para crear nuevas cuentas de usuario en el sistema. Permite definir diferentes características de la cuenta, como el directorio personal, el grupo principal, grupos adicionales, el intérprete de comandos y otros parámetros relacionados con la configuración del usuario.
| Categoría | Usuarios y administración del sistema |
|---|---|
| Disponible en | Linux (Debian / Ubuntu / derivadas y otras distribuciones) |
| Equivalente en Windows | net user o New-LocalUser en PowerShell |
| Sustituye a | No sustituye directamente a otro comando. Es una herramienta tradicional para crear cuentas de usuario desde la terminal. |
| ¿Requiere permisos de administrador? | Sí. Normalmente debe ejecutarse con privilegios de superusuario mediante sudo. |
¿Qué significa su nombre?
USERADD procede de la combinación de las palabras inglesas USER (usuario) y ADD (añadir).
Por tanto, useradd significa literalmente «añadir un usuario» y hace referencia a la creación de una nueva cuenta de usuario en el sistema.
¿Para qué sirve?
El comando useradd sirve para crear nuevas cuentas de usuario en Linux desde la línea de comandos. Durante la creación se puede indicar información como el directorio personal del usuario, su grupo principal, otros grupos a los que pertenecerá y el shell que utilizará.
Es una herramienta especialmente importante en la administración de sistemas, ya que permite crear cuentas de forma automatizada y reproducible. Por ejemplo, un administrador puede utilizar useradd en scripts para crear varias cuentas con una configuración determinada.
Es importante diferenciar la creación de una cuenta de la asignación de una contraseña. Dependiendo de la distribución y de las opciones utilizadas, useradd puede crear la cuenta pero dejarla sin una contraseña válida. Para establecer una contraseña se utiliza posteriormente el comando passwd.
Sintaxis
sudo useradd [opciones] nombre_usuario
Las opciones más habituales son:
| Opción | Descripción |
|---|---|
-m |
(make) Crea el directorio personal del nuevo usuario si no existe. |
-d [directorio] |
Especifica el directorio personal que utilizará el usuario. |
-s [shell] |
Indica el intérprete de comandos que utilizará el usuario. |
-g [grupo] |
Establece el grupo principal del usuario. |
-G [grupos] |
Añade al usuario a uno o varios grupos secundarios. |
-c [comentario] |
Añade información descriptiva sobre la cuenta, normalmente el nombre completo del usuario. |
-u [UID] |
Permite especificar manualmente el identificador numérico del usuario. |
-e [fecha] |
Establece una fecha de expiración para la cuenta. |
-r |
Crea una cuenta de sistema en lugar de una cuenta de usuario normal. |
-M |
No crea el directorio personal del usuario. |
Comandos más utilizados
| Comando | Descripción |
|---|---|
sudo useradd usuario |
Crea una nueva cuenta de usuario. |
sudo useradd -m usuario |
Crea el usuario y su directorio personal. |
sudo useradd -m -s /bin/bash usuario |
Crea el usuario, su directorio personal y establece Bash como shell. |
sudo useradd -m -G grupo usuario |
Crea el usuario y lo añade a un grupo secundario. |
sudo passwd usuario |
Establece o modifica la contraseña del usuario. |
id usuario |
Muestra el UID, GID y grupos a los que pertenece el usuario. |
Equivalencia con otros sistemas
| Acción | Linux | Windows CMD | Windows PowerShell |
|---|---|---|---|
| Crear usuario | sudo useradd usuario |
net user usuario /add |
New-LocalUser usuario |
| Establecer contraseña | sudo passwd usuario |
net user usuario * |
$Password = Read-Host -AsSecureString |
| Consultar usuario | id usuario |
net user usuario |
Get-LocalUser usuario |
| Eliminar usuario | sudo userdel usuario |
net user usuario /delete |
Remove-LocalUser usuario |
Ejemplos
Crear un usuario básico
sudo useradd alumno
Crear un usuario junto con su directorio personal
sudo useradd -m alumno
Crear un usuario utilizando Bash como shell
sudo useradd -m -s /bin/bash alumno
Crear un usuario y añadirlo a un grupo secundario
sudo useradd -m -G usuarios alumno
Crear un usuario especificando su nombre completo
sudo useradd -m -c "Juan García López" alumno
Crear un usuario con un directorio personal personalizado
sudo useradd -m -d /home/alumno alumno
Establecer una contraseña para el usuario
sudo passwd alumno
Comprobar la información de la cuenta creada
id alumno
Ejemplo de salida
$ sudo useradd -m -s /bin/bash alumno
$ id alumno
uid=1001(alumno) gid=1001(alumno) groups=1001(alumno)
¿Cómo interpretar la salida?
- uid=1001: indica el identificador numérico (UID) asignado al usuario.
- alumno: es el nombre de la cuenta asociada al UID.
- gid=1001: indica el identificador del grupo principal del usuario.
- groups=1001(alumno): muestra los grupos a los que pertenece actualmente la cuenta.
Los UID y GID son identificadores numéricos que utiliza Linux internamente para distinguir usuarios y grupos. El nombre que aparece entre paréntesis es simplemente la representación legible asociada a ese identificador.
Errores habituales
- Olvidar utilizar
sudo, lo que provoca un error de permisos al intentar crear la cuenta. - Crear un usuario sin utilizar
-my asumir que siempre se generará automáticamente su directorio personal. El comportamiento predeterminado puede depender de la configuración de la distribución. - Crear una cuenta con
useraddy olvidar establecer posteriormente una contraseña mediantepasswd. - Confundir
-gcon-G. La opción-gestablece el grupo principal, mientras que-Gpermite indicar grupos secundarios. - Especificar un shell que no existe. Por ejemplo, utilizar una ruta incorrecta con la opción
-spuede impedir que el usuario disponga del intérprete esperado. - Asignar manualmente un UID que ya está siendo utilizado por otro usuario. En general, es preferible dejar que el sistema asigne automáticamente el siguiente identificador disponible.
Conceptos relacionados
- Usuario
- Grupo
- UID
- GID
- Directorio personal
- Shell
- Permisos
- Superusuario
/etc/passwd/etc/group
Comandos relacionados
adduserpasswdusermoduserdelgroupaddgroupmodgroupdelidgroups
Curiosidades
En Debian y Ubuntu existe también el comando adduser, que proporciona una interfaz más amigable para crear usuarios. Mientras que useradd es una herramienta de bajo nivel con numerosas opciones para configurar la cuenta, adduser funciona como un script que facilita el proceso y solicita interactivamente información como la contraseña y los datos del usuario.
Por este motivo, en sistemas Debian y Ubuntu es habitual utilizar adduser cuando una persona administra cuentas manualmente desde la terminal, mientras que useradd resulta especialmente interesante para aprender cómo se crean y configuran las cuentas a bajo nivel y para utilizarlo en determinados scripts de administración.
Cuando se crea una cuenta, Linux no identifica internamente al usuario únicamente por su nombre. Cada usuario dispone de un UID numérico, que es el identificador que utiliza el sistema para aplicar permisos sobre archivos y recursos.
Prácticas propuestas
- Crea un usuario llamado
alumno1utilizandosudo useradd -m alumno1. Comprueba que se ha creado su directorio personal dentro de/home. - Establece una contraseña para
alumno1utilizandosudo passwd alumno1. Después, comprueba que puedes iniciar una sesión con dicha cuenta. - Utiliza
id alumno1para consultar el UID, GID y grupos asociados a la cuenta. - Crea un segundo usuario llamado
alumno2utilizando la opción-spara establecer/bin/bashcomo intérprete de comandos. - Crea un grupo llamado
claseutilizandosudo groupadd clase. Después, crea un usuario llamadoalumno3y añádelo al grupo mediante la opción-G. - Comprueba mediante
id alumno3que el usuario pertenece al grupoclase. - Compara las opciones
-gy-G. Crea diferentes usuarios y observa la diferencia entre grupo principal y grupos secundarios. - Consulta el archivo
/etc/passwdy localiza las líneas correspondientes a los usuarios que acabas de crear. Identifica su nombre de usuario, UID, GID, directorio personal y shell. - Compara el funcionamiento de
useraddyadduser. Explica qué diferencias encuentras en la forma de crear una cuenta. - Elimina las cuentas de prueba creadas durante la práctica utilizando
userdel. Comprueba previamente qué archivos existen en sus directorios personales.
Consejo: En Debian y Ubuntu, utiliza useradd -m cuando quieras crear explícitamente el directorio personal del usuario. Recuerda que crear una cuenta y establecer su contraseña son operaciones independientes: después de crear el usuario puedes utilizar passwd para establecer sus credenciales.
Preguntas de reflexión:
- ¿Qué diferencia existe entre crear un usuario con
useraddy establecer posteriormente su contraseña conpasswd? - ¿Para qué sirve la opción
-my qué problema puede aparecer si no se crea el directorio personal? - ¿Qué diferencia existe entre el grupo principal indicado mediante
-gy los grupos secundarios indicados mediante-G? - ¿Qué información representa el UID y por qué Linux utiliza identificadores numéricos para los usuarios?
- ¿Qué función desempeña el archivo
/etc/passwden la gestión de usuarios de Linux? - ¿Qué diferencias existen entre
useraddyadduseren Debian y Ubuntu? - ¿Por qué es importante especificar correctamente el shell mediante la opción
-s? - ¿Qué diferencia existe entre una cuenta de usuario normal y una cuenta de sistema creada mediante
useradd -r?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Qué diferencia existe entre crear un usuario con useradd y establecer posteriormente su contraseña con passwd?
useradd crea y configura la cuenta de usuario, pero no debe confundirse con la gestión de su contraseña. El comando passwd se utiliza específicamente para establecer o modificar la contraseña. Por tanto, son dos operaciones diferentes dentro de la administración de una cuenta.
2. ¿Para qué sirve la opción -m y qué problema puede aparecer si no se crea el directorio personal?
La opción -m solicita la creación del directorio personal del usuario. Este directorio es normalmente /home/nombre_usuario y sirve para almacenar sus archivos personales y configuraciones. Si no existe, el usuario puede encontrarse con un entorno de trabajo incompleto o no disponer del espacio personal esperado.
3. ¿Qué diferencia existe entre el grupo principal indicado mediante -g y los grupos secundarios indicados mediante -G?
El grupo principal es el grupo asociado por defecto a la cuenta y se utiliza, entre otras cosas, como grupo propietario de los archivos nuevos creados por el usuario. Los grupos secundarios permiten añadir permisos y pertenencia a otros grupos sin cambiar el grupo principal. La opción -g establece el grupo principal, mientras que -G especifica grupos secundarios.
4. ¿Qué información representa el UID y por qué Linux utiliza identificadores numéricos para los usuarios?
El UID es el identificador numérico único que Linux utiliza internamente para identificar una cuenta de usuario. Aunque las personas trabajan normalmente con nombres como alumno1, el sistema utiliza el UID para asociar propietarios y permisos a los archivos y otros recursos.
5. ¿Qué función desempeña el archivo /etc/passwd en la gestión de usuarios de Linux?
/etc/passwd contiene información básica sobre las cuentas locales del sistema, como el nombre de usuario, UID, GID, comentario, directorio personal y shell. A pesar de su nombre, en los sistemas Linux modernos las contraseñas no se almacenan normalmente en este archivo, sino que sus valores cifrados se encuentran en /etc/shadow, que tiene permisos de acceso más restrictivos.
6. ¿Qué diferencias existen entre useradd y adduser en Debian y Ubuntu?
useradd es una herramienta de bajo nivel que proporciona numerosas opciones para configurar una cuenta de manera precisa. adduser, disponible habitualmente en Debian y Ubuntu, proporciona una interfaz más sencilla y guiada para la creación de usuarios. Por ejemplo, puede solicitar interactivamente información como la contraseña y los datos descriptivos del usuario.
7. ¿Por qué es importante especificar correctamente el shell mediante la opción -s?
El shell es el programa que interpreta los comandos que introduce el usuario en la terminal. Si se especifica un shell incorrecto o que no está instalado, el usuario puede no disponer del entorno de terminal esperado al iniciar sesión. Un ejemplo habitual es /bin/bash, aunque existen otros shells como /bin/sh o /bin/zsh.
8. ¿Qué diferencia existe entre una cuenta de usuario normal y una cuenta de sistema creada mediante useradd -r?
Las cuentas de sistema están pensadas normalmente para servicios y procesos del propio sistema operativo, no para personas que inician sesión habitualmente. Una cuenta creada con -r utiliza la configuración destinada a usuarios del sistema, como un rango de UID apropiado y otras características definidas por la distribución. Las cuentas normales están destinadas a usuarios humanos que utilizan el sistema de forma interactiva.