Aller au contenu principal

Sécuriser sa session Linux

Droits utilisateur, chmod, chown : premiers réflexes

Petite vérification​

Avant de commencer, vérifiez si vous savez encore répondre à ces 3 questions très simples, sur la séance précédente :

  1. citer au moins 2 indices qui trahissent presque toujours un email de phishing
  2. quel réflexe permet de vérifier l'adresse réelle d'un lien, sans jamais cliquer dessus ?
  3. que faut-il faire en priorité si l'on a déjà saisi son mot de passe sur un faux site ?
📌 Réponse attendue

TP pour réfléchir et résoudre des problèmes​

Votre défi pour aujourd'hui consiste à apprendre à lire et à modifier les droits d'accès à vos propres fichiers, sur votre serveur Linux

Étape 1 — Observer les permissions d'un fichier​

Connectez-vous à votre serveur Linux, comme les semaines précédentes, puis créez un fichier de test dans votre dossier personnel :

cd ~
echo "Ceci est un fichier de test" > notes.txt
ls -l notes.txt

Vous obtenez une ligne qui ressemble à ceci :

-rw-r--r-- 1 etudiant etudiant 29 oct. 9 10:00 notes.txt

À partir de cette ligne, répondez :

  1. le propriétaire du fichier peut-il le lire ? peut-il le modifier ? peut-il l'exécuter ?
  2. les autres utilisateurs du serveur peuvent-ils le lire ? peuvent-ils le modifier ?
  3. que signifie le tout premier caractère de la ligne (le - avant rw-r--r--) ?
📌 Réponse attendue

Étape 2 — Modifier des permissions avec chmod​

Essayez les deux commandes suivantes, l'une après l'autre, en observant ls -l après chacune :

chmod u+x notes.txt
ls -l notes.txt

chmod 644 notes.txt
ls -l notes.txt

Que constatez-vous après chacune des deux commandes ? Expliquez la différence entre les deux façons d'écrire des permissions (u+x et 644).

📌 Réponse attendue

Étape 3 — Protéger un fichier contenant un secret​

Créez maintenant un second fichier, qui contient cette fois une information sensible :

echo "API_KEY=azerty1234" > secret.txt
ls -l secret.txt

Par défaut, ce fichier est créé avec les mêmes permissions que notes.txt à l'étape 1 (-rw-r--r--) : tout utilisateur du serveur peut donc le lire. Corrigez cela en donnant les droits de lecture et d'écriture au seul propriétaire, et aucun droit à qui que ce soit d'autre.


Bonne pratique - 600 pour tout fichier contenant un secret

Un fichier qui contient un mot de passe, une clé d'API ou tout autre secret doit presque toujours avoir les permissions 600 (rw-------) : seul son propriétaire peut le lire et le modifier, personne d'autre. Vous retrouverez ce réflexe très bientôt, avec les variables d'environnement.

📌 Une solution

Étape 4 — Comprendre chown, et pourquoi il nécessite presque toujours les droits root​

chmod modifie les droits d'accès à un fichier. chown (change owner) modifie, lui, le propriétaire du fichier. Essayez :

chown etudiant:etudiant secret.txt

Cette commande réussit sans rien changer (vous êtes déjà propriétaire). Essayez maintenant d'en changer réellement le propriétaire pour un autre utilisateur du serveur :

chown root:root secret.txt

Que se passe-t-il, et pourquoi, selon vous, cette seconde commande se comporte-t-elle différemment de la première ?

📌 Réponse attendue

Notions théoriques​

Vous venez de manipuler, sans le savoir sous ce nom, l'un des mécanismes de sécurité les plus anciens et les plus utilisés de Linux : les permissions.

Trois catégories d'utilisateurs, trois droits​

Chaque fichier ou dossier Linux définit des droits pour trois catégories d'utilisateurs :

CatégorieSymboleCe qu'elle désigne
Propriétaireu (user)L'utilisateur qui possède le fichier
Groupeg (group)Les membres du groupe associé au fichier
Autreso (others)Tous les autres utilisateurs du système

Et pour chacune, trois droits possibles : lecture (r), écriture (w), exécution (x).

info

Sur un dossier, le droit d'exécution (x) a un sens particulier : il autorise à entrer dans ce dossier (cd), pas à l'« exécuter » au sens d'un programme.

Lire une ligne ls -l​

-rw-r--r-- 1 etudiant etudiant 29 oct. 9 10:00 notes.txt
PartieSignification
-Type d'élément (- = fichier, d = dossier)
rw-Droits du propriétaire (lecture, écriture, pas d'exécution)
r--Droits du groupe (lecture seule)
r--Droits des autres utilisateurs (lecture seule)
etudiant (1er)Nom du propriétaire
etudiant (2e)Nom du groupe

Vous avez déjà décodé cette ligne par vous-même à l'étape 1 du TP.

La notation octale : additionner des valeurs​

Chaque droit a une valeur : lecture 4, écriture 2, exécution 1. On additionne ces valeurs pour chaque catégorie, ce qui donne un chiffre de 0 à 7 :

DroitsCalculChiffre
rwx4+2+17
rw-4+26
r-x4+15
r--44
---aucun droit0

chmod 644 fichier signifie donc : 6 (lecture + écriture) pour le propriétaire, 4 (lecture seule) pour le groupe, 4 (lecture seule) pour les autres. C'est exactement ce que vous avez observé à l'étape 2 du TP.

attention

chmod 777 donne tous les droits à tout le monde. C'est presque toujours une mauvaise pratique : un fichier ou un script avec cette permission peut être lu, modifié, voire remplacé par n'importe quel utilisateur du système.

chown : changer de propriétaire, un geste d'administrateur​

chown utilisateur:groupe fichier change le propriétaire (et éventuellement le groupe) d'un fichier. Contrairement à chmod (que le propriétaire d'un fichier peut utiliser librement sur son propre fichier), chown vers un autre utilisateur nécessite presque toujours les droits root (sudo chown ...), exactement comme vous l'avez constaté à l'étape 4 du TP.

astuce

Vous retrouverez très bientôt ce même principe sous un autre nom : le principe du moindre privilège, qui consiste à ne jamais donner plus de droits que nécessaire, que ce soit à un fichier ou à un utilisateur.


Test de mémorisation/compréhension​


Dans la ligne `-rw-r--r-- 1 etudiant etudiant 29 oct. 9 10:00 notes.txt`, que peut faire le propriétaire du fichier ?


Que signifie le tout premier caractère d'une ligne `ls -l`, par exemple le `-` de `-rw-r--r--` ?


Que fait la commande `chmod u+x notes.txt` ?


À quels droits correspond le chiffre `6` dans la notation octale (`chmod 644`, par exemple) ?


Pourquoi un fichier contenant un mot de passe ou une clé d'API devrait-il presque toujours avoir les permissions `600` ?


Pourquoi `chmod 777` est-il presque toujours considéré comme une mauvaise pratique ?


Pourquoi la commande `chown root:root secret.txt`, lancée par un utilisateur normal sur son propre fichier, échoue-t-elle sans `sudo` ?


Quelle est la différence essentielle entre `chmod` et `chown` ?



Restitution orale​

Un étudiant (ou un binôme) vient présenter au tableau sa démarche pour sécuriser le fichier secret.txt de l'étape 3.

  • Durée : 5 minutes de présentation + 2 à 3 minutes de questions.
  • Qui passe : un volontaire, sinon un tirage au sort.
  • Support : le travail réalisé pendant le TP, aucune préparation supplémentaire n'est nécessaire.
  • Ce qui est attendu :
    1. présenter la ligne ls -l obtenue avant et après la correction des permissions (étape 3) ;
    2. expliquer pourquoi chown root:root secret.txt a échoué à l'étape 4 ;
    3. répondre aux questions de la classe.
astuce

Cet exercice entraîne à l'oral technique court exigé par plusieurs épreuves du BTS (notamment E5 et E6) : clarté, structure, capacité à répondre à l'improviste.