Lorsqu’on administre un système Linux, il est fréquent d’avoir besoin de créer de nouveaux utilisateurs. Deux commandes existent pour cela : useradd et adduser. Elles semblent équivalentes à première vue, mais leur origine et leur fonctionnement diffèrent sensiblement.

1. useradd : la commande native

useradd fait partie des outils bas niveau de gestion des comptes utilisateurs fournis par le paquet passwd (souvent issu du projet shadow-utils dans les distributions modernes).

  • Rôle : créer un compte utilisateur en manipulant directement les fichiers systèmes comme /etc/passwd, /etc/shadow, /etc/group et /etc/skel.
  • Comportement : par défaut, useradd est assez strict et minimaliste. Si aucune option n’est passée, l’utilisateur peut être créé sans répertoire personnel ni shell défini.
  • Syntaxe : useradd -m -s /bin/bash nouvelutilisateur Ici, -m force la création du home directory et -s définit le shell par défaut.

En résumé, useradd est un outil bas niveau, destiné à être utilisé dans des scripts ou par des administrateurs expérimentés qui savent exactement quels paramètres fournir.


2. adduser : le wrapper convivial

adduser n’est pas une commande native du noyau ou des utilitaires de base, mais un script Perl (dans Debian/Ubuntu et dérivées). Son but est de rendre l’expérience plus simple et plus interactive.

  • Rôle : fournir une interface de haut niveau pour useradd.
  • Fonctionnement : il agit comme un wrapper : il appelle useradd (et parfois usermod) en arrière-plan, mais ajoute une logique de vérification et une interaction avec l’administrateur.
  • Interaction : lorsque vous tapez : adduser nouvelutilisateur le script va vous poser des questions : mot de passe, nom complet, informations supplémentaires… puis créer automatiquement le répertoire personnel, copier les fichiers de /etc/skel, configurer les droits, etc.

Pourquoi en Perl ?

Historiquement, dans Debian et ses dérivés, adduser a été écrit en Perl afin de bénéficier rapidement d’un langage de script puissant et portable pour ajouter cette couche d’ergonomie au-dessus des outils système existants.

  • Cela permettait d’avoir une logique conditionnelle et interactive, plus difficile à maintenir en pur shell.
  • Avec Perl, la gestion des chaînes, des formulaires interactifs et de la configuration est plus simple.

3. Différences pratiques entre useradd et adduser

Aspectuseraddadduser
OrigineOutil bas niveau (shadow-utils)Script Perl (Debian/Ubuntu)
Répertoire homeNon créé par défautToujours créé
Shell par défautPeut être /bin/sh ou non définiDéfini automatiquement (souvent /bin/bash)
InteractionAucune, nécessite toutes les optionsPose des questions (mot de passe, infos)
PortabilitéPrésent sur toutes les distrosSpécifique aux dérivées Debian (Ubuntu, Mint, etc.)
CibleScripts et admins expertsAdministrateurs cherchant la simplicité

4. Conclusion : lequel utiliser ?

  • Sur Debian/Ubuntu et distributions dérivées, adduser est recommandé pour la plupart des cas, car il est plus sûr et évite les oublis (home directory, shell, etc.).
  • Sur d’autres systèmes comme Red Hat, CentOS, Fedora, seule la commande useradd est disponible — ce qui reflète bien sa nature d’outil universel.

En pratique, adduser n’est qu’un wrapper en Perl autour de useradd, mais il illustre bien une philosophie Debian : rendre l’administration plus accessible tout en gardant la puissance des outils Unix en arrière-plan.


👉 Chez DYB, lorsqu’on automatise la gestion des comptes dans nos infrastructures clientes, on privilégie useradd dans les scripts (prévisible, universel), et adduser dans l’administration manuelle quotidienne (ergonomique, sécurisé).