{"id":1261,"date":"2025-09-10T14:07:05","date_gmt":"2025-09-10T12:07:05","guid":{"rendered":"https:\/\/dyb.fr\/?p=1261"},"modified":"2025-09-10T14:07:05","modified_gmt":"2025-09-10T12:07:05","slug":"comprendre-la-difference-entre-useradd-et-adduser-sous-linux","status":"publish","type":"post","link":"https:\/\/dyb.eu\/blog\/comprendre-la-difference-entre-useradd-et-adduser-sous-linux\/","title":{"rendered":"Comprendre la diff\u00e9rence entre useradd et adduser sous Linux"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Lorsqu\u2019on administre un syst\u00e8me Linux, il est fr\u00e9quent d\u2019avoir besoin de cr\u00e9er de nouveaux utilisateurs. Deux commandes existent pour cela : <strong><code>useradd<\/code><\/strong> et <strong><code>adduser<\/code><\/strong>. Elles semblent \u00e9quivalentes \u00e0 premi\u00e8re vue, mais leur origine et leur fonctionnement diff\u00e8rent sensiblement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. <code>useradd<\/code> : la commande native<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>useradd<\/code> fait partie des <strong>outils bas niveau de gestion des comptes utilisateurs<\/strong> fournis par le paquet <code>passwd<\/code> (souvent issu du projet <a href=\"https:\/\/github.com\/shadow-maint\/shadow\">shadow-utils<\/a> dans les distributions modernes).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>R\u00f4le<\/strong> : cr\u00e9er un compte utilisateur en manipulant directement les fichiers syst\u00e8mes comme <code>\/etc\/passwd<\/code>, <code>\/etc\/shadow<\/code>, <code>\/etc\/group<\/code> et <code>\/etc\/skel<\/code>.<\/li>\n\n\n\n<li><strong>Comportement<\/strong> : par d\u00e9faut, <code>useradd<\/code> est assez strict et minimaliste. Si aucune option n\u2019est pass\u00e9e, l\u2019utilisateur peut \u00eatre cr\u00e9\u00e9 <strong>sans r\u00e9pertoire personnel<\/strong> ni shell d\u00e9fini.<\/li>\n\n\n\n<li><strong>Syntaxe<\/strong> : <code>useradd -m -s \/bin\/bash nouvelutilisateur<\/code> Ici, <code>-m<\/code> force la cr\u00e9ation du home directory et <code>-s<\/code> d\u00e9finit le shell par d\u00e9faut.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En r\u00e9sum\u00e9, <code>useradd<\/code> est un outil <strong>bas niveau<\/strong>, destin\u00e9 \u00e0 \u00eatre utilis\u00e9 dans des scripts ou par des administrateurs exp\u00e9riment\u00e9s qui savent exactement quels param\u00e8tres fournir.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. <code>adduser<\/code> : le wrapper convivial<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>adduser<\/code> n\u2019est pas une commande native du noyau ou des utilitaires de base, mais un <strong>script Perl<\/strong> (dans Debian\/Ubuntu et d\u00e9riv\u00e9es). Son but est de rendre l\u2019exp\u00e9rience plus simple et plus interactive.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>R\u00f4le<\/strong> : fournir une <strong>interface de haut niveau<\/strong> pour <code>useradd<\/code>.<\/li>\n\n\n\n<li><strong>Fonctionnement<\/strong> : il agit comme un <strong>wrapper<\/strong> : il appelle <code>useradd<\/code> (et parfois <code>usermod<\/code>) en arri\u00e8re-plan, mais ajoute une logique de v\u00e9rification et une interaction avec l\u2019administrateur.<\/li>\n\n\n\n<li><strong>Interaction<\/strong> : lorsque vous tapez : <code>adduser nouvelutilisateur<\/code> le script va vous poser des questions : mot de passe, nom complet, informations suppl\u00e9mentaires\u2026 puis cr\u00e9er automatiquement le r\u00e9pertoire personnel, copier les fichiers de <code>\/etc\/skel<\/code>, configurer les droits, etc.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Pourquoi en Perl ?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Historiquement, dans Debian et ses d\u00e9riv\u00e9s, <code>adduser<\/code> a \u00e9t\u00e9 \u00e9crit en <strong>Perl<\/strong> afin de b\u00e9n\u00e9ficier rapidement d\u2019un langage de script puissant et portable pour ajouter cette couche d\u2019ergonomie au-dessus des outils syst\u00e8me existants.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cela permettait d\u2019avoir une logique conditionnelle et interactive, plus difficile \u00e0 maintenir en pur shell.<\/li>\n\n\n\n<li>Avec Perl, la gestion des cha\u00eenes, des formulaires interactifs et de la configuration est plus simple.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Diff\u00e9rences pratiques entre <code>useradd<\/code> et <code>adduser<\/code><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Aspect<\/th><th><code>useradd<\/code><\/th><th><code>adduser<\/code><\/th><\/tr><\/thead><tbody><tr><td>Origine<\/td><td>Outil bas niveau (<code>shadow-utils<\/code>)<\/td><td>Script Perl (Debian\/Ubuntu)<\/td><\/tr><tr><td>R\u00e9pertoire home<\/td><td>Non cr\u00e9\u00e9 par d\u00e9faut<\/td><td>Toujours cr\u00e9\u00e9<\/td><\/tr><tr><td>Shell par d\u00e9faut<\/td><td>Peut \u00eatre <code>\/bin\/sh<\/code> ou non d\u00e9fini<\/td><td>D\u00e9fini automatiquement (souvent <code>\/bin\/bash<\/code>)<\/td><\/tr><tr><td>Interaction<\/td><td>Aucune, n\u00e9cessite toutes les options<\/td><td>Pose des questions (mot de passe, infos)<\/td><\/tr><tr><td>Portabilit\u00e9<\/td><td>Pr\u00e9sent sur toutes les distros<\/td><td>Sp\u00e9cifique aux d\u00e9riv\u00e9es Debian (Ubuntu, Mint, etc.)<\/td><\/tr><tr><td>Cible<\/td><td>Scripts et admins experts<\/td><td>Administrateurs cherchant la simplicit\u00e9<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Conclusion : lequel utiliser ?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sur <strong>Debian\/Ubuntu<\/strong> et distributions d\u00e9riv\u00e9es, <strong><code>adduser<\/code><\/strong> est recommand\u00e9 pour la plupart des cas, car il est plus s\u00fbr et \u00e9vite les oublis (home directory, shell, etc.).<\/li>\n\n\n\n<li>Sur d\u2019autres syst\u00e8mes comme <strong>Red Hat, CentOS, Fedora<\/strong>, seule la commande <strong><code>useradd<\/code><\/strong> est disponible \u2014 ce qui refl\u00e8te bien sa nature d\u2019outil universel.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En pratique, <strong><code>adduser<\/code> n\u2019est qu\u2019un wrapper en Perl autour de <code>useradd<\/code><\/strong>, mais il illustre bien une philosophie Debian : rendre l\u2019administration plus accessible tout en gardant la puissance des outils Unix en arri\u00e8re-plan.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49 Chez <strong>DYB<\/strong>, lorsqu\u2019on automatise la gestion des comptes dans nos infrastructures clientes, on privil\u00e9gie <code>useradd<\/code> dans les scripts (pr\u00e9visible, universel), et <code>adduser<\/code> dans l\u2019administration manuelle quotidienne (ergonomique, s\u00e9curis\u00e9).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lorsqu\u2019on administre un syst\u00e8me Linux, il est fr\u00e9quent d\u2019avoir besoin de cr\u00e9er de nouveaux utilisateurs. Deux commandes existent pour cela : useradd et adduser. Elles semblent \u00e9quivalentes \u00e0 premi\u00e8re vue, mais leur origine et leur fonctionnement diff\u00e8rent sensiblement. 1. useradd : la commande native useradd fait partie des outils bas niveau de gestion des comptes [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[29],"class_list":["post-1261","post","type-post","status-publish","format-standard","hentry","category-adminsys","tag-linux"],"_links":{"self":[{"href":"https:\/\/dyb.eu\/blog\/wp-json\/wp\/v2\/posts\/1261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dyb.eu\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dyb.eu\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dyb.eu\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dyb.eu\/blog\/wp-json\/wp\/v2\/comments?post=1261"}],"version-history":[{"count":0,"href":"https:\/\/dyb.eu\/blog\/wp-json\/wp\/v2\/posts\/1261\/revisions"}],"wp:attachment":[{"href":"https:\/\/dyb.eu\/blog\/wp-json\/wp\/v2\/media?parent=1261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dyb.eu\/blog\/wp-json\/wp\/v2\/categories?post=1261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dyb.eu\/blog\/wp-json\/wp\/v2\/tags?post=1261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}