Utilisateurs & Groupes Linux
Linux est un système multi-utilisateurs. Chaque personne ou service a son propre compte, avec des permissions distinctes pour assurer la sécurité et la traçabilité.
Concepts fondamentaux
Username et UID
Chaque compte utilisateur a 2 identifiants uniques :
| Identifiant | Description |
|---|---|
| Username | Nom lisible, utilisé pour se connecter (peut changer, doit être unique) |
| UID (User Identifier) | Nombre assigné par Linux, immuable, utilisé en interne par le système |
Le username est pour les humains. L'UID est pour le système. Deux ordinateurs différents peuvent avoir le même UID pour des utilisateurs différents (contrairement à Windows Active Directory qui gère les comptes de façon centralisée).
Les 3 types de comptes
┌─────────────────────────────────────────────────────────────────┐
│ 1. Superutilisateur (root) UID = 0 │
│ ─ Permissions illimitées sur tout le système │
│ ─ Utilisé pour les tâches d'administration │
│ ─ 1 seul root par machine │
├─────────────────────────────────────────────────────────────────┤
│ 2. Compte utilisateur normal │
│ ─ Créé pour chaque membre de l'équipe │
│ ─ Ex: alice → /home/alice │
│ ─ Permissions limitées à ses propres fichiers │
├─────────────────────────────────────────────────────────────────┤
│ 3. Compte de service (system account) │
│ ─ Créé automatiquement par les logiciels serveur │
│ ─ Ex: "mysql" pour MySQL, "nginx" pour Nginx │
│ ─ Bonne pratique : ne JAMAIS faire tourner un service │
│ avec le compte root │
└─────────────────────────────────────────────────────────────────┘
Linux vs Windows — Gestion des comptes
| Linux | Windows (Active Directory) |
|---|---|
| Comptes locaux à la machine | Comptes centralisés sur tous les ordinateurs |
| UID peut se répéter entre machines | UID unique dans tout le réseau |
| Pas de connexion automatique sur une autre machine | Login possible sur n'importe quel PC du réseau |
| Adapté aux serveurs indépendants | Adapté aux réseaux d'entreprise |
Fichier /etc/passwd
Ce fichier contient la liste de tous les comptes du système.
cat /etc/passwd
# Format : username:x:UID:GID:description:home:shell
root:x:0:0:root:/root:/bin/bash
alice:x:1001:1001:Alice Dupont:/home/alice:/bin/bash
mysql:x:112:117:MySQL Server:/var/lib/mysql:/usr/sbin/nologin
Tout le monde peut lire
/etc/passwd, mais seul root peut le modifier. Les mots de passe sont stockés (hachés) dans/etc/shadow(lecture root uniquement).
Groupes Linux
Un groupe = ensemble d'utilisateurs partageant les mêmes permissions.
Groupe "devops"
├── alice
├── bob
└── charlie
Groupe "admin"
├── alice
└── david
- Chaque groupe a un GID (Group Identifier)
- Root a toujours un GID de 0
- Un utilisateur peut appartenir à plusieurs groupes
- Le groupe primaire d'un utilisateur = créé automatiquement avec le même nom
Pourquoi utiliser des groupes ?
- Donner des permissions à toute une équipe d'un seul coup
- Traçabilité : savoir qui a fait quoi sur le serveur
- Séparation des responsabilités : junior ≠ senior, devops ≠ finance
Commandes de gestion
Créer et modifier des utilisateurs
# Créer un utilisateur (recommandé — interactif, auto-configure home et UID)
sudo adduser alice
# Créer un utilisateur (bas niveau — vous gérez tout manuellement)
sudo useradd alice
# Supprimer un utilisateur
sudo deluser alice
sudo userdel alice # bas niveau
# Modifier un utilisateur
sudo usermod -g devops alice # Changer le groupe primaire
sudo usermod -G admin alice # Définir le groupe secondaire (remplace)
sudo usermod -aG devops alice # Ajouter au groupe (sans retirer les autres)
sudo usermod -l nouveau alice # Renommer l'utilisateur
# Changer de mot de passe
sudo passwd alice
Créer et modifier des groupes
# Créer un groupe
sudo groupadd devops
sudo addgroup devops # version haut niveau
# Supprimer un groupe
sudo groupdel devops
sudo delgroup devops # version haut niveau
# Lister les membres d'un groupe
getent group devops
Afficher les informations
id # UID, GID et groupes de l'utilisateur courant
id alice # UID, GID et groupes d'Alice
whoami # Nom de l'utilisateur courant
groups # Groupes de l'utilisateur courant
cat /etc/group # Lister tous les groupes et leurs membres
adduser vs useradd
adduser / addgroup | useradd / groupadd | |
|---|---|---|
| Type | Script haut niveau (interactif) | Commande bas niveau |
| Facilité | ✅ Plus simple | Paramètres manuels |
| Home créé | ✅ Automatiquement | ❌ Option -m requise |
| UID/GID | ✅ Choisis automatiquement | Manuel |
| Recommandé | ✅ Pour usage courant | Scripts avancés |
Bonnes pratiques sécurité
- Ne jamais partager le compte root entre plusieurs personnes
- Créer un compte individuel par membre de l'équipe (traçabilité)
- Ne jamais exécuter des services (MySQL, Nginx) avec le compte root
- Utiliser
sudoplutôt que de se connecter directement en root - Supprimer ou désactiver les comptes qui ne sont plus utilisés
- Configurer une expiration des mots de passe
À retenir
- 3 types de comptes : root (UID=0), utilisateur normal, compte de service
- Username = pour les humains ; UID = pour le système (immuable)
/etc/passwd= liste de tous les comptes (lisible par tous)adduser alice= créer un utilisateur (recommandé, interactif)usermod -aG groupe alice= ajouter alice à un groupe sans retirer les autres- Groupes = gérer les permissions par équipe plutôt que par personne
- Linux = gestion locale (UID local) ≠ Windows Active Directory (UID central)