Files
abonnel-www/b00c2ea3-1cf9-48f3-9790-fbef393c23a5/draft_overlay.md
T
2026-05-16 16:39:11 +02:00

3.7 KiB

Choisir entre adduser et useradd

Sur un système Linux, deux commandes permettent d'ajouter un utilisateur : useradd et adduser. Elles se ressemblent, mais ne jouent pas dans la même catégorie — et confondre les deux peut mener à des comptes mal configurés.

Deux outils, deux philosophies

useradd est un utilitaire bas niveau, présent sur toutes les distributions Linux. Il fait exactement ce qu'on lui demande, ni plus ni moins : sans options, il crée une entrée minimale dans /etc/passwd et c'est tout.

adduser, à l'inverse, est un script Perl interactif propre à Debian, Ubuntu et leurs dérivées (il n'existe pas tel quel sur Arch ou RHEL). Il s'appuie sur useradd en coulisses mais applique en plus les conventions de la distribution.

Aspect useradd adduser (Debian)
Niveau Bas niveau, non interactif Haut niveau, interactif
Répertoire home Créé uniquement avec -m Créé automatiquement
Squelette /etc/skel Copié uniquement avec -m Copié systématiquement
Mot de passe À définir séparément (passwd) Demandé à la volée
Groupes par défaut Aucun en dehors du groupe principal Lus dans /etc/adduser.conf
Disponibilité Universel Debian/Ubuntu uniquement

En résumé : adduser est pratique pour une création manuelle sur un poste Debian, useradd est l'outil de choix pour les scripts et les environnements portables.

Exemple : reproduire adduser avec useradd

Voici un script Bash qui encapsule useradd pour offrir une ergonomie proche d'adduser, tout en restant portable.

#!/bin/bash

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m'

print_error()   { echo -e "${RED}[ERROR] $1${NC}"; }
print_info()    { echo -e "${YELLOW}[INFO] $1${NC}"; }
print_success() { echo -e "${GREEN}[SUCCESS] $1${NC}"; }

add_user() {
  local username=$1
  local realname=$2
  local password=$3
  local homedir=$4
  local shell=$5
  local groups=$6

  if id -u "$username" >/dev/null 2>&1; then
    print_error "L'utilisateur $username existe déjà."
    return 1
  fi

  # -m crée le home et copie /etc/skel ; -U crée un groupe homonyme
  useradd -c "$realname" -d "$homedir" -s "$shell" -G "$groups" -m -U "$username" || {
    print_error "Échec de la création de $username."
    return 1
  }

  if [ -n "$password" ]; then
    echo "$username:$password" | chpasswd
  fi

  print_success "L'utilisateur $username a été ajouté avec succès."
}

La fonction add_user prend les mêmes arguments qu'adduser : nom d'utilisateur, nom réel, mot de passe, répertoire home, shell et groupes supplémentaires. Elle vérifie d'abord l'absence du compte, délègue ensuite à useradd -m -U la création du home (avec copie de /etc/skel) et du groupe principal, puis applique le mot de passe via chpasswd.

Exemple d'appel :

add_user "jdoe" "John Doe" "password" "/home/jdoe" "/bin/bash" "sudo,www-data"

Note sécurité : passer un mot de passe en clair en argument le rend visible dans l'historique shell et dans ps. En production, préférez chpasswd -e avec un hash, ou laissez passwd demander le mot de passe interactivement.

En pratique

  • Administration manuelle sur Debian/Ubuntu : adduser, sans hésiter.
  • Scripts d'automatisation, Ansible, conteneurs, distributions non-Debian : useradd, qui garantit un comportement identique partout.
  • Suppression : symétriquement, deluser (Debian) et userdel répondent à la même logique.

Connaître la différence évite les surprises — par exemple un home manquant parce qu'on a oublié -m, ou un script qui marche en local et casse sur un serveur Alpine.