Useradd
| Fiche express | |
|---|---|
| Domaine | Gestion des comptes utilisateurs |
| Commande | useradd
|
| Contexte | Toutes distributions Linux (shadow-utils) — sur Debian/Ubuntu préférer souvent adduser (wrapper interactif) pour un usage manuel
|
| Voir aussi | usermod, userdel, passwd, chage
|
useradd crée un compte utilisateur Linux (entrée dans /etc/passwd, /etc/shadow, appartenance aux groupes). Elle est bas niveau : contrairement à adduser sur Debian/Ubuntu, elle ne crée pas automatiquement le répertoire personnel ni ne demande interactivement les informations, sauf configuration explicite (voir option -m ci-dessous et /etc/login.defs).
Création d'un utilisateur
Créer un utilisateur nommé benoit avec un uid 1000, un gid primaire 1000, un shell /bin/bash, un répertoire personnel /home/benoit (créé grâce à -m), un commentaire (champ GECOS) et membre du groupe secondaire users :
useradd -u 1000 -g 1000 -s /bin/bash -d /home/benoit -m -c "My comment" -G users benoit
Définir le mot de passe en même temps que la création, via un hash pré-calculé (évite de passer le mot de passe en clair sur la ligne de commande) :
useradd -u 1000 -g 1000 -s /bin/bash -d /home/benoit -m -p $(openssl passwd -1 Mon_Password) benoit
Créer un second compte de superutilisateur (même uid 0 que root, donc mêmes droits) — usage exceptionnel, à documenter si utilisé :
useradd -o -u 0 -g 0 -s /bin/bash -d /root root1
⚠️ L'option de commentaire/GECOS est -c (minuscule), pas -C — une confusion fréquente qui fait échouer la commande.
Modification d'un utilisateur (usermod)
usermod reprend globalement les mêmes options que useradd, appliquées à un compte existant. Exemple, changer le shell de benoit :
usermod -s /bin/nologin benoit
Ajouter benoit au groupe secondaire docker sans perdre ses autres groupes (toujours utiliser -a avec -G, sinon usermod -G remplace la liste complète des groupes secondaires) :
usermod -aG docker benoit
Renommer le compte et déplacer son répertoire personnel :
usermod -l nouveaunom -d /home/nouveaunom -m ancien_nom
Suppression d'un utilisateur (userdel)
Supprimer le compte benoit (laisse le répertoire personnel et le mail spool en place) :
userdel benoit
Supprimer le compte et son répertoire personnel/mail spool :
userdel -r benoit
⚠️ Vérifier qu'aucun process ne tourne encore sous cet uid avant suppression (ps -u benoit), sinon userdel refuse de s'exécuter (ou laisse des fichiers orphelins selon la distribution).
Mot de passe et expiration
Changer le mot de passe de benoit de façon interactive :
passwd benoit
Positionner un mot de passe de façon non interactive sur RHEL/CentOS (extension Red Hat, absente sur Debian/Ubuntu) :
echo monMotDePasse | passwd --stdin benoit
Équivalent portable, disponible partout (Debian/Ubuntu comme RHEL/CentOS) :
echo "benoit:monMotDePasse" | chpasswd
Verrouiller/déverrouiller un compte sans supprimer le mot de passe :
passwd -l benoit # verrouille
passwd -u benoit # déverrouille
Afficher la politique d'expiration du compte benoit :
chage -l benoit
Forcer l'expiration du mot de passe de benoit à une date donnée :
chage -E 2028-04-07 benoit
Astuce : régénérer les commandes useradd d'un serveur existant
Pour reconstituer, à partir de /etc/passwd, la liste des commandes useradd qui recréeraient les comptes présents sur une machine (utile avant une migration ou pour de la documentation) :
awk -F: '{print "useradd -u "$3" -d "$6" -s "$7" "$1}' /etc/passwd
Voir aussi
groupadd/groupmod/groupdel— gestion des groupes (création, renommage, suppression), pendant naturel de cette page côté groupes plutôt que comptes- Chkconfig — pour le contexte des services système sur les mêmes machines RHEL/CentOS historiques