La comanda useradd crea comptes d’usuari a Linux. És l’eina de baix nivell del paquet shadow i és present a totes les distribucions: Debian, Ubuntu, RHEL, Rocky, Fedora, Arch… A diferència d’adduser de Debian, no pregunta res: fa exactament el que li indiques amb les opcions i agafa la resta de valors de la configuració del sistema. Per això és la que es fa servir en scripts.
Sintaxi
sudo useradd [opcions] usuari
Opcions més útils
| Opció | Què fa |
|---|---|
-m | Crea el directori personal i hi copia /etc/skel |
-M | No crea el directori personal |
-d dir | Directori personal (per defecte, /home/usuari) |
-s shell | Shell d’inici, per exemple /bin/bash o /usr/sbin/nologin |
-c "text" | Comentari (camp GECOS), normalment el nom complet |
-g grup | Grup primari (ha d’existir) |
-G grup1,grup2 | Grups secundaris |
-u UID | UID concret |
-e AAAA-MM-DD | Data de caducitat del compte |
-r | Crea un usuari de sistema (UID per sota de 1000) |
-k dir | Directori plantilla alternatiu a /etc/skel (amb -m) |
-p hash | Contrasenya ja xifrada (no la contrasenya en clar) |
-D | Mostra (o canvia) els valors per defecte |
Què fa useradd per defecte
Depèn de la distribució, i aquesta és la font de confusions més habitual:
| Debian / Ubuntu | RHEL / Rocky / Fedora | |
|---|---|---|
| Crea el directori personal | No, si no poses -m | Sí (CREATE_HOME yes a /etc/login.defs) |
| Shell per defecte | El que digui SHELL a /etc/default/useradd (a Debian, /bin/sh si no s’ha canviat) | /bin/bash |
| Crea un grup amb el nom de l’usuari | Sí | Sí |
| Contrasenya | Cap: el compte queda bloquejat | Cap: el compte queda bloquejat |
Per no dependre de la distribució, indica sempre -m i -s explícitament. I pots consultar els valors per defecte amb useradd -D (aquesta és la sortida d’un Debian 13 acabat d’instal·lar):
$ useradd -D
GROUP=100
GROUPS=
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
USRSKEL=/usr/etc/skel
CREATE_MAIL_SPOOL=no
LOG_INIT=yes
Exemples
Crear un usuari amb directori personal i Bash, i posar-li contrasenya:
sudo useradd -m -s /bin/bash joan
sudo passwd joan
Fins que no li poses contrasenya, el compte existeix però no pot entrar amb contrasenya.
Crear un usuari complet en una sola línia:
sudo useradd -m -c "Anna Puig" -s /bin/bash -G sudo anna
Comprovar el resultat:
$ getent passwd anna
anna:x:1004:1004:Anna Puig:/home/anna:/bin/bash
$ id anna
uid=1004(anna) gid=1004(anna) groups=1004(anna),27(sudo)
Amb un grup primari existent i grups secundaris:
sudo useradd -m -g comptabilitat -G vendes,users maria
Un compte temporal que caduca a final d’any:
sudo useradd -m -e 2026-12-31 becari
Un usuari de sistema per a un servei, sense directori ni sessió:
sudo useradd -r -M -s /usr/sbin/nologin servei
Un usuari que fa servir una plantilla de fitxers diferent:
sudo useradd -m -k /etc/skel-alumnes -s /bin/bash alumne1
Posar la contrasenya en un script
L’opció -p espera la contrasenya ja xifrada (un hash). Si hi poses la contrasenya en clar, useradd la desarà tal qual a /etc/shadow i no podràs entrar. A més, el que passes per la línia de comandes queda visible a l’historial i a la llista de processos.
En un script és millor crear l’usuari i després assignar la contrasenya amb chpasswd, que la llegeix de l’entrada estàndard:
sudo useradd -m -s /bin/bash joan
echo 'joan:UnaContrasenyaLlarga' | sudo chpasswd
sudo chage -d 0 joan # l'obliga a canviar-la el primer cop que entri
Compte amb…
- Noms d’usuari: en minúscules, sense espais ni accents, començant per una lletra.
-gvs-G:-gés el grup primari (només un);-Gsón els grups secundaris.- Si t’has oblidat de
-m: el compte existeix però no té directori. Pots crear-lo a posteriori ambsudo mkhomedir_helper joan(Debian/Ubuntu) o copiant/etc/skela mà i ajustant-ne el propietari ambchown -R. - Per esborrar un usuari:
sudo userdel joan; amb-rtambé esborra el seu directori personal i la bústia de correu.
Comandes relacionades
useradd -c … -g … -d … -s …: una línia completa explicada peça a peça.adduser: la versió interactiva de Debian i Ubuntu.- Diferències entre
adduseriuseradd usermod: modificar un usuari existent.passwdichage: contrasenyes i caducitat.- Automatitzar la creació d’usuaris amb scripts de Bash