Utilisateurs, groupes et sudo
En PME, votre serveur Linux accueille plusieurs personnes : techniciens, serveur web (www-data), agent GLPI... Chacun a un compte distinct avec des droits précis. Comprendre la gestion des utilisateurs vous permettra de créer des accès sécurisés, de déléguer sans donner les droits root, et de comprendre qui fait quoi sur le système.
Les fichiers clés du système
/etc/passwd : la liste des utilisateurs
cat /etc/passwd | head -5
# root:x:0:0:root:/root:/bin/bash
# daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
# alice:x:1001:1001:Alice Dupont:/home/alice:/bin/bash
Format : nom:x:UID:GID:description:dossier-perso:shell
x= mot de passe haché stocké dans/etc/shadow(non lisible sans root)/usr/sbin/nologin= compte de service, ne peut pas se connecter interactivement
/etc/group : les groupes
cat /etc/group | grep sudo
# sudo:x:27:alice,bob
Format : nom-groupe:x:GID:membres
Gérer les utilisateurs
# Créer un utilisateur avec son dossier personnel
adduser technicien2
# Modifier le groupe principal d'un utilisateur
usermod -g webadmin alice
# Ajouter un utilisateur à un groupe supplémentaire
usermod -aG sudo alice # -a = ajouter (sans -a, remplace les groupes!)
usermod -aG www-data alice
# Lister les groupes d'un utilisateur
groups alice
# alice : alice sudo www-data
# Verrouiller/déverrouiller un compte
usermod -L alice # Lock
usermod -U alice # Unlock
# Supprimer un utilisateur
deluser alice
deluser --remove-home alice # supprime aussi /home/alice
sudo : exécuter sans être root
# Mauvaise pratique
su - # devient root : dangereux (toutes les commandes s'exécutent en root)
# Bonne pratique
sudo apt update # exécute une seule commande en root
sudo systemctl restart apache2
sudo -u www-data ls /var/www/ # exécute en tant que www-data
L'avantage de sudo : chaque commande est journalisée dans /var/log/auth.log. On sait qui a fait quoi et quand.
Qui peut utiliser sudo ?
Les utilisateurs listés dans le groupe sudo (Debian/Ubuntu) peuvent utiliser sudo. Vérifiez avec :
groups votre-utilisateur
# votre-utilisateur : votre-utilisateur sudo
Cas concret
Un nouveau technicien rejoint la PME. Vous devez lui créer un compte avec accès sudo mais sans donner le mot de passe root :
# 1. Créer le compte
sudo adduser jean-tech
# 2. Ajouter au groupe sudo
sudo usermod -aG sudo jean-tech
# 3. Vérifier
groups jean-tech
# jean-tech : jean-tech sudo
# 4. Tester (en tant que jean-tech)
sudo whoami
# root ← sudo fonctionne
graph TD ROOT["root (UID 0)<br/>Tous les droits"] SUDOGRP["Groupe sudo<br/>alice, jean-tech"] WWWDATA["www-data (UID 33)<br/>Service Apache/PHP"] NORMAL["bob<br/>Utilisateur standard"] SUDOGRP -->|"sudo commande"| ROOT WWWDATA -->|"Accès /var/www/"| FILES["Fichiers web"] NORMAL -->|"Accès limité à /home/bob"| HOMEDIR["/home/bob"]
Erreurs fréquentes
- Oublier
-adansusermod -aG: sans-a, la commande remplace tous les groupes de l'utilisateur par le seul groupe spécifié. - Travailler directement en root (
su -) : si vous faites une erreur, pas de filet de sécurité.sudocommande par commande est bien plus sûr. - Supprimer un utilisateur sans vérifier les processus en cours : ses processus actifs peuvent planter des services.
À retenir
/etc/passwdliste les utilisateurs ;/etc/groupliste les groupes.usermod -aG groupe utilisateurajoute sans écraser les autres groupes.sudo= exécuter une commande en root avec traçabilité : préférer àsu -.
Mini-exercice
Tapez groups $(whoami) pour voir vos groupes. Puis cat /etc/passwd | grep $(whoami) pour voir votre entrée dans la base des utilisateurs. Notez votre UID et GID.