← Sommaire SkyLinux

62 - useradd, usermod et groupadd — Créer et administrer des utilisateurs

Sur un système Linux, chaque personne qui utilise la machine a son propre compte. Créer un utilisateur, lui attribuer des groupes, modifier ses paramètres ou verrouiller un accès — voici les commandes essentielles pour gérer les utilisateurs et les groupes de manière sécurisée.

1. Anatomie d'un compte utilisateur

Chaque utilisateur sur Linux est défini par plusieurs informations stockées dans deux fichiers clés :

Format d'une ligne dans /etc/passwd

utilisateur:x:1001:1001:Prénom Nom:/home/utilisateur:/bin/bash │ │ │ │ │ │ │ │ │ │ │ │ │ └─ Shell par défaut │ │ │ │ │ └─ Répertoire personnel │ │ │ │ └─ Champ GECOS (nom complet, etc.) │ │ │ └─ GID du groupe principal │ │ └─ UID (numéro unique de l'utilisateur) │ └─ x = mot de passe dans /etc/shadow └─ Nom de connexion

2. useradd — Créer un nouvel utilisateur

Création simple

# Créer un utilisateur standard sudo useradd -m utilisateur # Explique : # -m : crée aussi le répertoire personnel (/home/utilisateur)

Création avec options complètes

# Créer avec un commentaire (champ GECOS) sudo useradd -m -c "Jean Dupont, Service IT" -s /bin/bash utilisateur # Spécifier l'UID sudo useradd -m -u 1500 utilisateur # Spécifier le groupe principal (doit exister) sudo useradd -m -g developers -s /bin/bash utilisateur # Spécifier les groupes secondaires (séparés par virgules) sudo useradd -m -G sudo,audio,video utilisateur # Spécifier le répertoire personnel (si différent de /home/login) sudo useradd -m -d /data/utilisateurs/jean utilisateur # Définir un shell par défaut sudo useradd -m -s /bin/zsh utilisateur # Créer un compte système (pas de login interactif possible) sudo useradd -r service-account # Définir la date d'expiration du compte sudo useradd -m -e 2025-12-31 utilisateur

Vérifier après création

# Voir l'utilisateur dans /etc/passwd grep utilisateur /etc/passwd # Vérifier son répertoire personnel ls -la /home/utilisateur/ # Lister tous les groupes d'un utilisateur groups utilisateur

3. passwd — Définir le mot de passe

Après useradd, il faut attribuer un mot de passe :

# Définir le mot de passe d'un utilisateur sudo passwd utilisateur # L'utilisateur peut changer son propre mot de passe passwd # Forcer un changement de mot de passe au prochain login sudo passwd -e utilisateur # Vérouiller un compte (désactive le mot de passe) sudo passwd -l utilisateur # Déverrouiller un compte sudo passwd -u utilisateur # Supprimer le mot de passe (connexion sans mot de passe) sudo passwd -d utilisateur

4. usermod — Modifier un utilisateur existant

Changer les attributs de base

# Changer le nom de connexion sudo usermod -l nouveau_nom ancien_nom # Changer le répertoire personnel sudo usermod -d /nouveau/chemin -m utilisateur # -m : déplace aussi le contenu de l'ancien répertoire # Ajouter un commentaire sudo usermod -c "Nouveau commentaire" utilisateur # Changer le shell par défaut sudo usermod -s /bin/zsh utilisateur # Changer l'UID sudo usermod -u 1600 utilisateur # Changer le GID du groupe principal sudo usermod -g 1500 utilisateur

Gérer les groupes d'un utilisateur

# Ajouter l'utilisateur à un groupe supplémentaire sudo usermod -a -G audio utilisateur # -a (append) est OBLIGATOIRE pour ajouter sans remplacer # Ajouter à plusieurs groupes sudo usermod -a -G sudo,video,bluetooth utilisateur # Remplacer tous les groupes secondaires (sans -a) sudo usermod -G developers,admins utilisateur # Retirer un utilisateur d'un groupe sudo gpasswd -d utilisateur groupe

Vérouiller ou désactiver un compte

# Vérouiller le compte (ajoute ! devant le mot de passe) sudo usermod -L utilisateur # Déverrouiller le compte sudo usermod -U utilisateur # Définir une date d'expiration sudo usermod -e 2025-12-31 utilisateur # Désactiver le compte (aussi via chsh -s /bin/false) sudo usermod -s /bin/false utilisateur

5. groupadd — Créer et gérer des groupes

Créer un groupe

# Créer un groupe standard sudo groupadd developers # Créer un groupe système (GID < 1000) sudo groupadd -r service-group # Spécifier un GID sudo groupadd -g 1500 developers

gpasswd — Gérer les membres d'un groupe

# Ajouter un utilisateur au groupe sudo gpasswd -a utilisateur developers # Retirer un utilisateur du groupe sudo gpasswd -d utilisateur developers # Définir les administrateurs du groupe (peuvent ajouter/retirer des membres) sudo gpasswd -A utilisateur developers # Ajouter plusieurs utilisateurs sudo gpasswd -M user1,user2,user3 developers # (remplace tous les membres existants)

groupmod — Modifier un groupe existant

# Changer le nom du groupe sudo groupmod -n nouveau_nom ancien_nom # Changer le GID sudo groupmod -g 1600 developers

groupdel — Supprimer un groupe

# Supprimer un groupe sudo groupdel developers # Un groupe ne peut pas être supprimé s'il est le groupe principal d'un utilisateur

6. userdel — Supprimer un utilisateur

# Supprimer l'utilisateur (conserve le répertoire personnel) sudo userdel utilisateur # Supprimer l'utilisateur ET son répertoire personnel sudo userdel -r utilisateur # Forcer la suppression même si l'utilisateur est connecté sudo userdel -f utilisateur

7. who et w — Qui est connecté ?

# Qui est connecté actuellement who # Liste détaillée avec durée de connexion w # Exemple de sortie de w : # USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT # jean pts/0 192.168.1.10 09:23 1.00s 0.50s 0.10s bash

8. id — Afficher les informations UID/GID

# Informations complètes d'un utilisateur id utilisateur # uid=1001(utilisateur) gid=1001(utilisateur) groupes=1001(utilisateur),27(sudo),29(audio) # Juste le nom d'utilisateur whoami # Vérifier si un utilisateur existe id -u utilisateur # retourne 0 si existe, 1 si non

9. Cas pratiques

Créer un compte pour un nouvel employé

# 1. Créer le compte avec home sudo useradd -m -c "Marie Martin" -s /bin/bash -G sudo marie # 2. Définir le mot de passe sudo passwd marie # 3. Vérifier id marie groups marie

Créer un compte de service (sans login interactif)

# Compte système, pas de mot de passe, shell désactivé sudo useradd -r -s /bin/false -M service-app # Utiliser pour exécuter un service systemd # Dans le fichier unit : # User=service-app # Group=service-app

Transférer un compte vers un nouveau groupe principal

# 1. Créer le groupe s'il n'existe pas sudo groupadd projet_x # 2. Ajouter l'utilisateur au nouveau groupe sudo usermod -a -G projet_x utilisateur # 3. Changer le groupe principal sudo usermod -g projet_x utilisateur # 4. Vérifier id utilisateur

Auditer les comptes utilisateurs

# Lister tous les utilisateurs ordinaires (UID >= 1000) getent passwd | awk -F: '$3 >= 1000 && $3 < 65534 {print $1}' # Lister les comptes sans mot de passe sudo awk -F: '($2 == "") {print $1}' /etc/shadow # Lister les comptes expirés sudo awk -F: '($8 == "0") {print $1}' /etc/shadow

Résumé

CommandeDescription
sudo useradd -m utilisateurCréer un utilisateur avec répertoire personnel
sudo passwd utilisateurDéfinir le mot de passe
sudo usermod -a -G groupe userAjouter à un groupe (append)
sudo usermod -L utilisateurVerrouiller le compte
sudo usermod -e YYYY-MM-DD userDéfinir date d'expiration
sudo groupadd groupeCréer un groupe
sudo gpasswd -a user groupeAjouter un membre à un groupe
sudo groupdel groupeSupprimer un groupe
sudo userdel -r utilisateurSupprimer utilisateur et home
id utilisateurAfficher UID, GID et groupes
whoQui est connecté
groups utilisateurGroupes d'un utilisateur

La gestion des utilisateurs est une compétence fondamentale pour tout administrateur Linux. Ces commandes te permettent de créer, configurer, protéger et supprimer des comptes en toute sécurité.