Users, Groups & Permissions
Gestion des accĂšs et principe du moindre privilĂšge.

Gestion Utilisateurs & Groupes
useradd vs adduser
| Commande | Type | Comportement |
|---|---|---|
useradd |
Bas niveau | Crée l'utilisateur, c'est tout. Pas de home, pas de shell par défaut. |
adduser |
Script interactif | Crée home, copie /etc/skel, demande mot de passe. (Debian/Ubuntu) |
# Bas niveau (nécessite options explicites)
useradd -m -s /bin/bash -G sudo john
# Interactif (recommandé sur Debian/Ubuntu)
adduser john
# Supprimer un utilisateur
userdel john # Garde le home
userdel -r john # Supprime home + mail
deluser --remove-home john # Debian
Fichiers Clés
| Fichier | Contenu | Permissions |
|---|---|---|
/etc/passwd |
Info utilisateurs (UID, GID, home, shell) | 644 (lisible par tous) |
/etc/shadow |
Hash des mots de passe | 640 (root only) |
/etc/group |
Définition des groupes | 644 |
/etc/gshadow |
Mots de passe groupes | 640 |
Structure de /etc/passwd :
Structure de /etc/shadow :
Protéger /etc/shadow
Ce fichier contient les hash des mots de passe. Permissions incorrectes = fuite de hash = brute-force offline possible.
Commandes Utiles
# Qui suis-je ?
whoami
id
id john
# Output id:
# uid=1001(john) gid=1001(john) groups=1001(john),27(sudo),999(docker)
# Ajouter un utilisateur Ă un groupe secondaire
usermod -aG docker john # -a = append, -G = groupe secondaire
usermod -aG sudo john
# â ïž Sans -a, Ă©crase les groupes existants !
usermod -G docker john # DANGER: retire john de tous les autres groupes
# Changer le shell
usermod -s /bin/zsh john
# Verrouiller/déverrouiller un compte
usermod -L john # Lock
usermod -U john # Unlock
# Créer un groupe
groupadd developers
groupdel developers
# Voir les groupes d'un utilisateur
groups john
Permissions Standards (rwx)
Notation Octale vs Symbolique
| Octal | Binaire | Symbolique | Signification |
|---|---|---|---|
| 0 | 000 | --- |
Aucun droit |
| 1 | 001 | --x |
Exécution |
| 2 | 010 | -w- |
Ăcriture |
| 3 | 011 | -wx |
Ăcriture + ExĂ©cution |
| 4 | 100 | r-- |
Lecture |
| 5 | 101 | r-x |
Lecture + Exécution |
| 6 | 110 | rw- |
Lecture + Ăcriture |
| 7 | 111 | rwx |
Tous les droits |
Lecture des Permissions
-rwxr-xr-- 1 john developers 4096 Jan 15 10:00 script.sh
âââŹâââŹâââŹâ
â â â âââ Others (autres)
â â ââââââ Group (groupe)
â âââââââââ User/Owner (propriĂ©taire)
âââââââââââ Type (- = fichier, d = dir, l = lien)
chmod (Modifier les permissions)
# Notation octale
chmod 755 script.sh # rwxr-xr-x
chmod 644 config.txt # rw-r--r--
chmod 600 secret.key # rw-------
# Notation symbolique
chmod u+x script.sh # Ajouter exec pour user
chmod g-w file.txt # Retirer write pour group
chmod o-rwx private/ # Retirer tout pour others
chmod a+r readme.txt # Ajouter read pour all
# Récursif
chmod -R 755 /var/www/html/
chmod -R u+rwX,go+rX,go-w /var/www/ # X = exec seulement sur dirs
chown (Changer propriétaire)
# Changer propriétaire
chown john file.txt
# Changer propriétaire et groupe
chown john:developers file.txt
# Groupe seulement
chown :developers file.txt
chgrp developers file.txt
# Récursif
chown -R www-data:www-data /var/www/html/
Bonne Pratique : Jamais chmod 777
chmod 777 = tout le monde peut tout faire.
# INTERDIT en production
chmod 777 /var/www/html/ # N'IMPORTE QUI peut modifier/supprimer
# Correct
chmod 755 /var/www/html/ # Dirs: rwxr-xr-x
chmod 644 /var/www/html/*.html # Files: rw-r--r--
chown -R www-data:www-data /var/www/html/
Principe du moindre privilÚge : Accorder uniquement les droits nécessaires.
Permissions Communes
| Cible | Permissions | Raison |
|---|---|---|
| Scripts exécutables | 755 |
Lecture/exec pour tous |
| Fichiers de config | 644 |
Lecture pour tous |
| Clés privées SSH | 600 |
Propriétaire uniquement |
.ssh/ directory |
700 |
Propriétaire uniquement |
/etc/shadow |
640 |
root + groupe shadow |
| Répertoires web | 755 |
Lecture/traversée |
| Fichiers web | 644 |
Lecture |
Les "Special Bits" (Danger Zone)
Vue d'ensemble
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â SPECIAL BITS (4 bits supplĂ©mentaires) â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â SUID (4) â ExĂ©cuter avec droits du propriĂ©taire â
â SGID (2) â ExĂ©cuter avec droits du groupe / hĂ©ritage â
â Sticky (1) â Seul le proprio peut supprimer â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Notation : chmod XYYY oĂč X = special bits, YYY = permissions
Exemple : chmod 4755 = SUID + rwxr-xr-x
SUID (Set User ID) - Bit 4
Effet : Le programme s'exécute avec les droits de son propriétaire, pas de l'utilisateur qui le lance.
Cas d'usage légitime :
# passwd doit modifier /etc/shadow (owned by root)
# Sans SUID, un utilisateur ne pourrait pas changer son mot de passe
ls -la /usr/bin/passwd
# -rwsr-xr-x 1 root root ... /usr/bin/passwd
Gestion :
# Activer SUID
chmod u+s program
chmod 4755 program
# Désactiver SUID
chmod u-s program
chmod 0755 program
# Trouver tous les binaires SUID sur le systĂšme
find / -perm -4000 -type f 2>/dev/null
Risque de Sécurité SUID
Un binaire SUID vulnérable = élévation de privilÚges.
SGID (Set Group ID) - Bit 2
Sur un fichier : Exécution avec les droits du groupe propriétaire.
Sur un répertoire : Les fichiers créés héritent du groupe du répertoire (pas du groupe de l'utilisateur).
Cas d'usage : Dossier partagé d'équipe
# Créer un dossier partagé pour l'équipe dev
mkdir /shared/project
chown root:developers /shared/project
chmod 2775 /shared/project
# Résultat :
# - Tous les membres de "developers" peuvent écrire
# - Nouveaux fichiers appartiennent au groupe "developers"
# - Pas besoin de chgrp aprÚs chaque création
Gestion :
# Activer SGID
chmod g+s directory/
chmod 2755 directory/
# Désactiver
chmod g-s directory/
# Trouver les répertoires SGID
find / -perm -2000 -type d 2>/dev/null
Sticky Bit - Bit 1
Effet : Dans un répertoire, seuls peuvent supprimer un fichier : - Le propriétaire du fichier - Le propriétaire du répertoire - root
Cas d'usage : /tmp
# Sans sticky bit sur /tmp :
# N'importe qui pourrait supprimer les fichiers des autres !
ls -ld /tmp
# drwxrwxrwt 10 root root 4096 Jan 15 10:00 /tmp
Gestion :
# Activer sticky bit
chmod +t directory/
chmod 1777 directory/
# Désactiver
chmod -t directory/
# Trouver les répertoires avec sticky bit
find / -perm -1000 -type d 2>/dev/null
Résumé Special Bits
| Bit | Valeur | Sur Fichier | Sur Répertoire |
|---|---|---|---|
| SUID | 4 | Exécute avec droits proprio | (ignoré) |
| SGID | 2 | Exécute avec droits groupe | Héritage du groupe |
| Sticky | 1 | (ignoré) | Protection suppression |
# Exemples combinés
chmod 4755 file # SUID + rwxr-xr-x
chmod 2775 dir # SGID + rwxrwxr-x
chmod 1777 dir # Sticky + rwxrwxrwx
# Notation symbolique
chmod u+s file # SUID
chmod g+s dir # SGID
chmod +t dir # Sticky
Sudoers & Sécurité
Modification Sécurisée
# TOUJOURS utiliser visudo
sudo visudo
# Pourquoi ?
# - Vérifie la syntaxe avant sauvegarde
# - Ăvite de se bloquer dehors avec une erreur
Ne jamais éditer directement
Structure d'une RĂšgle Sudo
user host=(runas) commands
â â â â
â â â âââ Commandes autorisĂ©es
â â âââââââââââââ Utilisateur cible (dĂ©faut: root)
â ââââââââââââââââââ Machine (ALL = toutes)
ââââââââââââââââââââââââââ Utilisateur ou %groupe
Exemples :
# AccĂšs total (dangereux)
john ALL=(ALL) ALL
# Groupe sudo standard
%sudo ALL=(ALL:ALL) ALL
# Commandes spécifiques seulement
john ALL=(root) /usr/bin/apt update, /usr/bin/apt upgrade
# Sans mot de passe (éviter pour admins)
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
# Alias pour lisibilité
Cmnd_Alias SERVICES = /usr/bin/systemctl start *, /usr/bin/systemctl stop *, /usr/bin/systemctl restart *
john ALL=(root) SERVICES
Vérifier ses Droits
# Lister ses droits sudo
sudo -l
# Output exemple :
# User john may run the following commands on server:
# (ALL : ALL) ALL
# (root) NOPASSWD: /usr/bin/systemctl restart nginx
SecNumCloud : Hardening Sudoers
RĂšgles de durcissement ANSSI :
-
Ăviter
ALL=(ALL) ALLpour les utilisateurs standards -
Toujours demander le mot de passe
-
Configurer le timeout
-
Logger toutes les commandes sudo
-
Restreindre l'éditeur
Fichiers de Configuration
# Configuration principale
/etc/sudoers
# Configurations additionnelles (incluses)
/etc/sudoers.d/
# Ajouter une config spécifique
sudo visudo -f /etc/sudoers.d/deploy
Référence Rapide
# Utilisateurs
id # Info utilisateur courant
useradd -m -s /bin/bash user # Créer utilisateur
usermod -aG group user # Ajouter au groupe
# Permissions
chmod 755 dir/ # rwxr-xr-x
chmod 644 file # rw-r--r--
chmod u+s file # SUID
chmod g+s dir/ # SGID
chmod +t dir/ # Sticky
# Propriétaire
chown user:group file # Changer proprio
chown -R www-data:www-data /var/www/
# Sudo
sudo -l # Lister ses droits
visudo # Ăditer sudoers
# Audit sécurité
find / -perm -4000 -type f # Binaires SUID
find / -perm -2000 -type d # Répertoires SGID
Voir aussi
- Sudoers Builder - Générateur interactif de rÚgles sudoers
- Clés SSH Sécurisées
- SSH Hardening & Fail2Ban
- Checklist d'Audit Sécurité