Aprende a utilizar los comandos useradd y adduser en Linux para crear y administrar usuarios desde la terminal. Descubre sus diferencias, sintaxis, ejemplos prácticos y mejores prácticas de administración del sistema.
Diferencia entre useradd y adduser
| Característica | useradd | adduser |
|---|---|---|
| Herramienta base | Sí | No |
| Interactiva | No | Sí |
| Crea Home automáticamente | No siempre | Sí |
| Solicita contraseña | No | Sí |
| Disponible en todas las distribuciones | Sí | No siempre |
Comando useradd en Linux
El comando useradd es una utilidad de administración de usuarios que permite crear nuevas cuentas en sistemas Linux. Es una herramienta de bajo nivel que modifica directamente archivos como:
/etc/passwd/etc/shadow/etc/group/etc/gshadow
En muchas distribuciones, adduser es simplemente una interfaz más amigable que utiliza useradd internamente.
Sintaxis
sudo useradd [opciones] nombre_usuario
Opciones mas importantes
- -m: Crea automáticamente el directorio home.
- -M: No crea el directorio home.
- -d: Define un directorio home personalizado.
- sudo useradd -m -d /datos/usuarios/oscar oscar
- -s: Define el shell por defecto.
- Bash: sudo useradd -m -s /bin/bash oscar
- Zsh: sudo useradd -m -s /bin/zsh oscar
- -u: Permite asignar un UID específico.
- -g: Asigna grupo principal.
- -G: Agrega grupos secundarios.
- -c: Agrega descripción o comentario.
- -e: Fecha de expiración de la cuenta.
- -f: Días de inactividad después de expirar la contraseña.
- -p: Permite asignar una contraseña cifrada.
¿Qué hace internamente?
- Crea una entrada en
/etc/passwd - Crea una entrada en
/etc/shadow - Asigna un UID disponible
- Asigna un grupo principal
- Configura valores por defecto
- Opcionalmente crea el directorio home
Archivos que modifica
/etc/passwd
Contiene información básica del usuario.
oscar:x:1001:1001::/home/oscar:/bin/sh
/etc/shadow
Contiene la contraseña cifrada y políticas de expiración.
oscar:!:20500:0:99999:7:::
!: significa que la cuenta aún no tiene contraseña válida.
/etc/group
Contiene los grupos del sistema.
oscar:x:1001:
Ejemplos useradd
Crear un usuario estandar
sudo useradd -m -s /bin/bash oscar
Comando adduser en Linux
adduser es una herramienta de alto nivel para crear usuarios en Linux. Internamente suele utilizar useradd, pero simplifica el proceso porque realiza varias tareas automáticamente e interactúa con el administrador para recopilar información del usuario.
Sintaxis básica
sudo adduser nombre_usuario
Opciones importantes
- --home: Permite definir un directorio home personalizado.
- sudo adduser --home /datos/usuarios/oscar oscar
- --shell: Define el shell del usuario.
- sudo adduser --shell /bin/bash oscar
- --uid: Asigna un UID específico.
- sudo adduser --uid 3000 oscar
- --gid: Define el grupo principal.
- sudo adduser --gid 2000 oscar
- --ingroup: Asigna un grupo existente.
- --disabled-password: Crea el usuario sin contraseña.
- --disabled-login: Deshabilita completamente el acceso.
¿Qué ocurre internamente?
- Crea el usuario /etc/passwd
- oscar:x:1001:1001:,,,:/home/oscar:/bin/bash
- Crea un grupo con el mismo nombre /etc/group
- oscar:x:1001:
- Crea el directorio home /home/oscar
- Copia archivos de configuración desde /etc/skel hacia /home/oscar, los archivos son .bashrc .profile .bash_logout
- Solicita una contraseña, La contraseña se almacena cifrada en: /etc/shadow
- Solicita información adicional
- Full Name []:
- Room Number []:
- Work Phone []:
- Home Phone []:
- Other []:
Ejemplo completo
sudo adduser oscar
Salida:
Adding user `oscar' ...
Adding new group `oscar' (1001) ...
Adding new user `oscar' (1001) with group `oscar' ...
Creating home directory `/home/oscar' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for oscar
Enter the new value, or press ENTER for the default
Full Name []: Oscar Fernandez
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
Verificar la creación de usuario
Ver usuario
id oscar
Respuesta: uid=1001(oscar) gid=1001(oscar) groups=1001(oscar)
Ver directorio home
ls -la /home/oscar
Ver información del usuario
getent passwd oscar
Respuesta: oscar:x:1001:1001:Oscar Fernandez:/home/oscar:/bin/bash