Useradd

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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