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 parfoisusermod
) 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
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,
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é).