Devmind.
Menu

Apprendre, à votre rythme

Tous les cursus sont accessibles sans compte.

Chapitre 1 / Notion

Utilisateurs, droits et fichiers

La plupart des compromissions ne cassent pas Linux : elles utilisent les droits qu'on leur a généreusement donnés.

◷ 16 minutesTravail sur votre machine

Prérequis (cursus dev) : terminal, utilisateurs et permissions.

Pourquoi

La plupart des compromissions ne cassent pas Linux : elles utilisent les droits qu'on leur a généreusement donnés. Un utilisateur par usage et des droits minimaux transforment une faille applicative en incident contenu au lieu d'une prise totale.

Concepts

  • Moindre privilège : chaque programme n'a que les droits strictement nécessaires. Pas de « au cas où ».
  • User système (useradd -r -s /usr/sbin/nologin monapp) : un compte sans login ni shell, juste pour faire tourner un service. Si l'app est compromise, l'attaquant hérite de droits minuscules.
  • Lecture des droits : -rw------- (600, propriétaire seul), drwxr-x--- (750, groupe lit, autres rien). Le premier caractère (-/d) dit fichier ou dossier.

Exemple : cloisonner une app

useradd -r -s /usr/sbin/nologin monapp
chown -R monapp:monapp /opt/monapp
chmod 750 /opt/monapp
chmod 600 /opt/monapp/.env
namei -l /opt/monapp/.env   # montre TOUT le chemin : un parent en écriture pour tous annule le 600

Cas réel : le disque, tueur silencieux

Symptômes d'un disque plein : Postgres refuse les écritures (could not extend file, message d'erreur en anglais à reconnaître), Docker ne démarre plus rien, les logs s'arrêtent — le silence avant la panne. Routine :

df -h                        # vue d'ensemble (à surveiller dès 80 %)
du -sh /var/* 2>/dev/null    # qui grossit ? souvent /var/log, /var/lib/docker
journalctl --vacuum-size=500M  # purger le journal en urgence
docker image prune           # jeter les images inutilisées (détaillé au chapitre 2)

Ensuite on traite la cause (rotation des logs), pas seulement le symptôme.

Pièges

  • .env en 644 « pour débugger » : lisible par tous les users de la machine.
  • chmod -R 777 « pour que ça marche » : la pire rustine de l'histoire, elle marche aussi pour l'attaquant.
  • Droits parfaits sur le fichier, parent en 777 : namei l'aurait montré.

À retenir

Un user par app, 600 pour les secrets jamais dans git, namei pour vérifier le chemin entier, disque surveillé avant 80 %.

Pas de correction en ligneConfrontez votre code aux résultats attendus du cours.