Utilisateurs et groupes
Table des matières
- Concept d'utilisateurs Linux
- Root vs utilisateur standard
- Commandes d'information
- Créer et gérer les utilisateurs
- Gérer les groupes
- Fichiers /etc/passwd et /etc/group
1 - Concept d'utilisateurs Linux
Linux est un système multi-utilisateurs. Chaque utilisateur possède :
- Un identifiant unique (UID)
- Un répertoire personnel
- Des permissions spécifiques
Types d'utilisateurs
| Type | UID | Usage |
|---|---|---|
| root | 0 | Super-administrateur |
| Système | 1-999 | Services et démons |
| Humains | 1000+ | Utilisateurs réels |
Pourquoi plusieurs utilisateurs ?
| Raison | Exemple |
|---|---|
| Sécurité | Isoler les accès |
| Audit | Tracer les actions |
| Permissions | Contrôler qui fait quoi |
| Services | Un utilisateur par service |
info
Chaque service (nginx, mysql, etc.) a généralement son propre utilisateur pour limiter les dégâts en cas de compromission.
🔝 Retour à la table des matières
2 - Root vs utilisateur standard
L'utilisateur root
| Caractéristique | Root | Utilisateur standard |
|---|---|---|
| UID | 0 | 1000+ |
| Home | /root | /home/username |
| Prompt | # | $ |
| Pouvoir | Illimité | Limité |
Dangers de root
danger
Travailler en root est dangereux !
# Une erreur de frappe peut être catastrophique
rm -rf / home/user # Espace en trop = système détruit !
Bonnes pratiques
| À faire | À éviter |
|---|---|
Utiliser sudo ponctuellement | Se connecter en root |
| Créer des utilisateurs dédiés | Tout faire en root |
| Limiter les privilèges | Partager le mot de passe root |
🔝 Retour à la table des matières
3 - Commandes d'information
whoami - Qui suis-je ?
$ whoami
john
id - Informations détaillées
$ id
uid=1000(john) gid=1000(john) groups=1000(john),27(sudo),docker(999)
$ id john
uid=1000(john) gid=1000(john) groups=1000(john),27(sudo)
$ id -u # Juste l'UID
1000
$ id -g # Juste le GID principal
1000
$ id -G # Tous les GIDs
1000 27 999
who - Utilisateurs connectés
$ who
john pts/0 2024-01-15 10:30 (192.168.1.100)
alice pts/1 2024-01-15 11:00 (192.168.1.101)
$ who -a # Informations détaillées
w - Activité des utilisateurs
$ w
10:45:00 up 5 days, 2:30, 2 users, load average: 0.15, 0.10, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
john pts/0 192.168.1.100 10:30 0.00s 0.05s 0.00s w
alice pts/1 192.168.1.101 11:00 5:00 0.02s 0.02s vim file.txt
last - Historique des connexions
$ last
john pts/0 192.168.1.100 Mon Jan 15 10:30 still logged in
alice pts/1 192.168.1.101 Mon Jan 15 11:00 still logged in
john pts/0 192.168.1.100 Sun Jan 14 09:00 - 18:00 (09:00)
$ last -n 5 # 5 dernières connexions
🔝 Retour à la table des matières
4 - Créer et gérer les utilisateurs
useradd - Créer un utilisateur
# Création basique
sudo useradd alice
# Création complète (recommandé)
sudo useradd -m -s /bin/bash -c "Alice Martin" alice
| Option | Effet |
|---|---|
-m | Créer le répertoire home |
-s | Shell de connexion |
-c | Commentaire (nom complet) |
-g | Groupe principal |
-G | Groupes supplémentaires |
-d | Chemin du home personnalisé |
-e | Date d'expiration |
adduser - Alternative interactive (Debian/Ubuntu)
sudo adduser bob
# Assistant interactif qui demande :
# - Mot de passe
# - Nom complet
# - Autres informations
astuce
adduser est plus convivial que useradd sur Debian/Ubuntu. Il crée automatiquement le home et demande le mot de passe.
passwd - Définir le mot de passe
# Définir le mot de passe d'un utilisateur
sudo passwd alice
# Changer son propre mot de passe
passwd
# Verrouiller un compte
sudo passwd -l alice
# Déverrouiller un compte
sudo passwd -u alice
# Forcer le changement à la prochaine connexion
sudo passwd -e alice
usermod - Modifier un utilisateur
# Changer le shell
sudo usermod -s /bin/zsh alice
# Ajouter à un groupe (sans retirer des autres)
sudo usermod -aG docker alice
# Changer le home
sudo usermod -d /home/new_alice -m alice
# Renommer
sudo usermod -l alice_new alice
attention
L'option -aG (append Groups) est cruciale ! Sans le a, l'utilisateur est retiré de tous ses groupes existants.
userdel - Supprimer un utilisateur
# Supprimer l'utilisateur (garde le home)
sudo userdel alice
# Supprimer l'utilisateur ET son home
sudo userdel -r alice
🔝 Retour à la table des matières
5 - Gérer les groupes
Concept de groupes
groupadd - Créer un groupe
# Créer un groupe
sudo groupadd developers
# Créer avec un GID spécifique
sudo groupadd -g 2000 devops
groupmod - Modifier un groupe
# Renommer un groupe
sudo groupmod -n dev developers
# Changer le GID
sudo groupmod -g 2001 devops
groupdel - Supprimer un groupe
sudo groupdel developers
gpasswd - Gérer les membres
# Ajouter un utilisateur au groupe
sudo gpasswd -a alice developers
# Retirer un utilisateur du groupe
sudo gpasswd -d alice developers
# Définir les administrateurs du groupe
sudo gpasswd -A alice developers
groups - Voir les groupes d'un utilisateur
$ groups
john sudo docker
$ groups alice
alice : alice developers docker
🔝 Retour à la table des matières
6 - Fichiers /etc/passwd et /etc/group
/etc/passwd - Base des utilisateurs
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
john:x:1000:1000:John Doe:/home/john:/bin/bash
Structure :
john:x:1000:1000:John Doe:/home/john:/bin/bash
│ │ │ │ │ │ │
│ │ │ │ │ │ └── Shell
│ │ │ │ │ └── Home
│ │ │ │ └── Commentaire (GECOS)
│ │ │ └── GID principal
│ │ └── UID
│ └── Mot de passe (x = dans /etc/shadow)
└── Nom d'utilisateur
/etc/shadow - Mots de passe (chiffrés)
$ sudo cat /etc/shadow
john:$6$xyz...:19000:0:99999:7:::
| Champ | Signification |
|---|---|
| 1 | Nom d'utilisateur |
| 2 | Mot de passe chiffré |
| 3 | Dernière modification |
| 4 | Âge minimum |
| 5 | Âge maximum |
| 6 | Période d'avertissement |
| 7 | Période d'inactivité |
| 8 | Date d'expiration |
/etc/group - Base des groupes
$ cat /etc/group
sudo:x:27:john,alice
docker:x:999:john,bob
developers:x:1001:alice,bob,carol
Structure :
developers:x:1001:alice,bob,carol
│ │ │ │
│ │ │ └── Membres
│ │ └── GID
│ └── Mot de passe (rarement utilisé)
└── Nom du groupe
Commandes utiles
# Voir un utilisateur spécifique
grep john /etc/passwd
# Compter les utilisateurs humains (UID >= 1000)
awk -F: '$3 >= 1000 {print $1}' /etc/passwd
# Voir les groupes d'un utilisateur
grep john /etc/group
🔝 Retour à la table des matières
Points clés à retenir
- Linux distingue root (UID 0), système (1-999) et humains (1000+)
- Ne jamais travailler en root directement → utiliser
sudo useradd -m -s /bin/bashouadduserpour créerusermod -aG groupe userpour ajouter aux groupes (attention au-a!)/etc/passwd= infos utilisateurs,/etc/shadow= mots de passe- Un utilisateur a un groupe principal et peut avoir des groupes secondaires