From e7dc8b5f265c89a8ea8e7de884f4898b33b499eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9drix?= Date: Sat, 16 May 2026 16:40:31 +0200 Subject: [PATCH] draft: Choisir entre adduser et useradd --- _logs/not_found.jsonl | 2 ++ .../draft_overlay.json | 2 +- .../draft_overlay.md | 27 ++++++++++--------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/_logs/not_found.jsonl b/_logs/not_found.jsonl index 75e4d89..434a7e7 100644 --- a/_logs/not_found.jsonl +++ b/_logs/not_found.jsonl @@ -135,3 +135,5 @@ {"ts":"2026-05-16 14:33:13","url":"/informatique/linux/commandes/fdupes","ref":"https://abonnel.fr/informatique/linux/commandes/fdupes","ua":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; SleepBot/1.0; +http://sleepbot.com/) Chrome/131.0.0.0 Safari/537.36"} {"ts":"2026-05-16 14:35:04","url":"/informatique/technologie/formats-audio/format-wma","ref":"","ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36"} {"ts":"2026-05-16 14:35:22","url":"/journal_geek/2024/2024-05-13-3d-modular-systems","ref":"https://www.abonnel.fr/journal_geek/2024/2024-05-13-3d-modular-systems","ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"} +{"ts":"2026-05-16 14:40:02","url":"/informatique/index","ref":"","ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36"} +{"ts":"2026-05-16 14:40:31","url":"/vie_pratique/cgos-compte-retraite-espace-personnel","ref":"https://duckduckgo.com/","ua":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:150.0) Gecko/20100101 Firefox/150.0"} diff --git a/b00c2ea3-1cf9-48f3-9790-fbef393c23a5/draft_overlay.json b/b00c2ea3-1cf9-48f3-9790-fbef393c23a5/draft_overlay.json index 87a6c3f..fd51a3b 100644 --- a/b00c2ea3-1cf9-48f3-9790-fbef393c23a5/draft_overlay.json +++ b/b00c2ea3-1cf9-48f3-9790-fbef393c23a5/draft_overlay.json @@ -1,5 +1,5 @@ { "title": "Choisir entre `adduser` et `useradd`", - "_updated_at": "2026-05-16 14:39:56", + "_updated_at": "2026-05-16 14:40:31", "slug": "choisir-entre-adduser-et-useradd" } diff --git a/b00c2ea3-1cf9-48f3-9790-fbef393c23a5/draft_overlay.md b/b00c2ea3-1cf9-48f3-9790-fbef393c23a5/draft_overlay.md index 9da4216..c0da25a 100644 --- a/b00c2ea3-1cf9-48f3-9790-fbef393c23a5/draft_overlay.md +++ b/b00c2ea3-1cf9-48f3-9790-fbef393c23a5/draft_overlay.md @@ -1,13 +1,14 @@ # Choisir entre `adduser` et `useradd` - -Sur un système Linux, deux commandes permettent d'ajouter un utilisateur : `useradd` et `adduser`. Elles se ressemblent, mais ne jouent pas dans la même catégorie — et confondre les deux peut mener à des comptes mal configurés. +Sur un système Linux, deux commandes permettent d'ajouter un utilisateur : `useradd` et `adduser`. Elles se ressemblent, mais ne jouent pas dans la même catégorie — et les confondre mène vite à des comptes mal configurés. ## Deux outils, deux philosophies -`useradd` est un utilitaire **bas niveau**, présent sur toutes les distributions Linux. Il fait exactement ce qu'on lui demande, ni plus ni moins : sans options, il crée une entrée minimale dans `/etc/passwd` et c'est tout. +`useradd` est un utilitaire **bas niveau**, présent sur toutes les distributions Linux. Il fait exactement ce qu'on lui demande, ni plus ni moins : sans options, il se contente d'ajouter une entrée minimale dans `/etc/passwd`, sans créer de home ni copier le squelette par défaut. -`adduser`, à l'inverse, est un **script Perl interactif** propre à Debian, Ubuntu et leurs dérivées (il n'existe pas tel quel sur Arch ou RHEL). Il s'appuie sur `useradd` en coulisses mais applique en plus les conventions de la distribution. +`adduser`, à l'inverse, est un **frontend interactif** propre à Debian, Ubuntu et leurs dérivées. Il s'appuie sur `useradd` en coulisses, mais applique les conventions de la distribution (UID dans la bonne plage, copie de `/etc/skel`, groupes par défaut lus dans `/etc/adduser.conf`, etc.). + +> ⚠️ Piège classique : sur Alpine, `adduser` existe aussi, mais c'est la version BusyBox, dont la syntaxe et le comportement diffèrent du `adduser` Debian. Même nom, autre outil. | Aspect | `useradd` | `adduser` (Debian) | |---|---|---| @@ -18,13 +19,15 @@ Sur un système Linux, deux commandes permettent d'ajouter un utilisateur : `use | Groupes par défaut | Aucun en dehors du groupe principal | Lus dans `/etc/adduser.conf` | | Disponibilité | Universel | Debian/Ubuntu uniquement | -En résumé : `adduser` est pratique pour une création manuelle sur un poste Debian, `useradd` est l'outil de choix pour les scripts et les environnements portables. +En résumé : `adduser` est pratique pour une création manuelle sur un poste Debian ; `useradd` est l'outil de choix pour les scripts et les environnements portables. ## Exemple : reproduire `adduser` avec `useradd` -Voici un script Bash qui encapsule `useradd` pour offrir une ergonomie proche d'`adduser`, tout en restant portable. +Voici un script Bash qui encapsule `useradd` pour offrir une ergonomie proche d'`adduser`, tout en restant portable. Il ne réimplémente pas tout (pas de lecture de `/etc/adduser.conf`, pas de validation `NAME_REGEX`, pas de gestion fine des plages d'UID), mais il couvre le cas le plus courant. -```BASH +> 🔒 **À lire avant l'exemple :** passer un mot de passe en clair en argument le rend visible dans l'historique shell et dans `ps`. L'exemple ci-dessous est pédagogique. En production, préférez `chpasswd -e` avec un hash, ou laissez `passwd` demander le mot de passe interactivement. + +```bash #!/bin/bash RED='\033[0;31m' @@ -63,20 +66,18 @@ add_user() { } ``` -La fonction `add_user` prend les mêmes arguments qu'`adduser` : nom d'utilisateur, nom réel, mot de passe, répertoire home, shell et groupes supplémentaires. Elle vérifie d'abord l'absence du compte, délègue ensuite à `useradd -m -U` la création du home (avec copie de `/etc/skel`) et du groupe principal, puis applique le mot de passe via `chpasswd`. +La fonction prend les mêmes arguments qu'`adduser` : nom d'utilisateur, nom réel, mot de passe, répertoire home, shell et groupes supplémentaires. Elle vérifie d'abord l'absence du compte, délègue ensuite à `useradd -m -U` la création du home (avec copie de `/etc/skel`) et du groupe principal, puis applique le mot de passe via `chpasswd`. Exemple d'appel : -```BASH +```bash add_user "jdoe" "John Doe" "password" "/home/jdoe" "/bin/bash" "sudo,www-data" ``` -> **Note sécurité :** passer un mot de passe en clair en argument le rend visible dans l'historique shell et dans `ps`. En production, préférez `chpasswd -e` avec un hash, ou laissez `passwd` demander le mot de passe interactivement. - ## En pratique - **Administration manuelle sur Debian/Ubuntu** : `adduser`, sans hésiter. - **Scripts d'automatisation, Ansible, conteneurs, distributions non-Debian** : `useradd`, qui garantit un comportement identique partout. -- **Suppression** : symétriquement, `deluser` (Debian) et `userdel` répondent à la même logique. +- **Suppression** : la même logique s'applique en miroir. `deluser` est le pendant Debian d'`adduser` ; `userdel` est l'outil bas niveau universel. -Connaître la différence évite les surprises — par exemple un home manquant parce qu'on a oublié `-m`, ou un script qui marche en local et casse sur un serveur Alpine. \ No newline at end of file +Connaître la différence évite les mauvaises surprises : un home manquant parce qu'on a oublié `-m`, un script qui passe en local et casse sur un serveur Alpine, ou un compte créé sans le groupe attendu parce qu'on supposait que `useradd` lirait `/etc/adduser.conf` — ce qu'il ne fait pas. \ No newline at end of file