Comprendre la différence entre useradd et adduser sous Linux
useradd est l'outil bas niveau, adduser un wrapper Perl interactif propre à Debian : différences pratiques et lequel choisir selon le contexte.
Aussi disponible en English

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/groupet/etc/skel. - Comportement : par défaut,
useraddest 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 nouvelutilisateurIci,-mforce la création du home directory et-sdé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 parfoisusermod) en arrière-plan, mais ajoute une logique de vérification et une interaction avec l’administrateur. - Interaction : lorsque vous tapez :
adduser nouvelutilisateurle 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
| Aspect | useradd | adduser |
|---|---|---|
| Origine | Outil bas niveau (shadow-utils) | Script Perl (Debian/Ubuntu) |
| Répertoire home | Non créé par défaut | Toujours créé |
| Shell par défaut | Peut être /bin/sh ou non défini | Défini automatiquement (souvent /bin/bash) |
| Interaction | Aucune, nécessite toutes les options | Pose des questions (mot de passe, infos) |
| Portabilité | Présent sur toutes les distros | Spécifique aux dérivées Debian (Ubuntu, Mint, etc.) |
| Cible | Scripts et admins experts | Administrateurs cherchant la simplicité |
4. Conclusion : lequel utiliser ?
- Sur Debian/Ubuntu et distributions dérivées,
adduserest 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
useraddest 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.
👉 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é).