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.
👉 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é).