02 · Permissions & utilisateurs

facile  ·  Durée estimée : 25 min

🎯 Objectif

Comprendre comment Linux protège les fichiers via les permissions. Savoir lire ls -l, modifier les droits avec chmod, changer le propriétaire avec chown.

C'est la base de la sécurité Unix : un fichier mal protégé peut être lu ou modifié par n'importe qui.

1. Lire les permissions — ls -l

La commande ls -l affiche les permissions sous forme de 10 caractères.

ls -l

Exemple de sortie :

-rw-r--r-- 1 user user  512 Nov 20 10:30 notes.txt
drwxr-xr-x 2 user user 4096 Nov 20 10:30 mon_dossier
-rwxr-xr-x 1 user user  128 Nov 20 10:30 script.sh

Décryptage des 10 caractères

-  r w x  r w x  r w x
│  │ │ │  │ │ │  │ │ │
│  │ │ │  │ │ │  └─┴─┴── Autres (others)
│  │ │ │  └─┴─┴───────── Groupe (group)
│  └─┴─┴──────────────── Propriétaire (user)
└────────────────────── Type : - (fichier) ou d (dossier)

Signification des lettres

-rw-r--r-- = le propriétaire peut lire et écrire, les autres peuvent seulement lire.
Tape ls -l dans ton dossier personnel et identifie au moins 3 fichiers avec des permissions différentes.
Tu dois voir la forme -rw-r--r-- ou drwxr-xr-x devant chaque ligne.
2. Qui suis-je ? — whoami et id

Pour connaître ton utilisateur actuel et tes groupes :

whoami
id
whoami → user
id → uid=1000(user) gid=1000(user) groups=1000(user),27(sudo)
Dans la console jslinux, tu es généralement l'utilisateur user. Sur un vrai système, tu verras root ou ton nom.
Vérifie ton identité avec whoami et note ton UID.
id doit afficher ton UID et tes groupes.
3. Changer les permissions — chmod

Méthode symbolique (la plus lisible)

chmod u+x script.sh      # ajoute exécution au propriétaire
chmod g-w notes.txt      # retire écriture au groupe
chmod o-r secret.txt     # retire lecture aux autres
chmod a+r public.txt     # ajoute lecture à tout le monde

Les symboles :

Méthode octale (la plus rapide)

chmod 755 script.sh      # rwxr-xr-x
chmod 644 notes.txt      # rw-r--r--
chmod 600 secret.txt     # rw-------
chmod 777 partage.txt    # rwxrwxrwx (⚠️ très permissif)

Calcul rapide des valeurs :

r = 4    w = 2    x = 1

7 = 4+2+1 = rwx
6 = 4+2   = rw-
5 = 4+1   = r-x
4 = 4     = r--
0 = 0     = ---
755 pour un script, 644 pour un fichier texte, 600 pour un fichier privé. Retiens ces trois-là.
Crée un fichier test.sh avec touch test.sh, puis rends-le exécutable avec chmod +x test.sh. Vérifie avec ls -l.
ls -l test.sh doit afficher -rwxr-xr-x ou similaire (avec un x).
4. Changement de propriétaire — chown

chown (change owner) change le propriétaire et/ou le groupe d'un fichier.

chown user2 fichier.txt        # change le propriétaire
chown user2:group2 fichier.txt # change propriétaire ET groupe
chown -R user2 dossier/        # récursif sur tout le dossier
chown nécessite généralement les droits root (sudo). Dans la console jslinux, tu es déjà user, tu ne pourras pas changer le propriétaire vers un autre utilisateur sans sudo. La commande est présentée ici pour que tu la connaisses.
Sur un vrai système Debian/Ubuntu, tu utiliseras sudo chown root:root fichier.txt pour rendre un fichier système au propriétaire root.
Regarde le propriétaire de tes fichiers avec ls -l. C'est la 3ᵉ colonne de la sortie.
Dans ls -l, la 3ᵉ colonne affiche user (ton nom d'utilisateur actuel).
5. Cas pratique — un script qui refuse de démarrer

Tu as écrit un script hello.sh. Tu essaies de l'exécuter :

./hello.sh

Erreur classique :

bash: ./hello.sh: Permission denied

Cause : le fichier n'a pas le bit x (exécution). Vérifie :

ls -l hello.sh

Sortie probable :

-rw-r--r-- 1 user user 32 Nov 20 10:30 hello.sh

Solution :

chmod +x hello.sh
./hello.sh
Crée un fichier hello.sh, écris-y echo "Bonjour", rends-le exécutable et lance-le.
echo 'echo "Bonjour"' > hello.sh
chmod +x hello.sh
./hello.sh
La console doit afficher Bonjour.
6. Umask — la permission par défaut

Quand tu crées un fichier, Linux lui donne automatiquement des permissions par défaut, calculées à partir de la umask.

umask
Sortie typique : 0022

Une umask de 022 signifie : les nouveaux fichiers auront 644 (666 - 022), les nouveaux dossiers 755 (777 - 022).

Tu peux modifier ta umask pour être plus strict : umask 077 donnera des fichiers en 600 et dossiers en 700 (privés).
Tape umask et note la valeur. Crée un fichier et un dossier, et vérifie leurs permissions par défaut avec ls -l.
Fichier créé → 644 probablement. Dossier créé → 755 probablement.
🎓 Récapitulatif
ls -l              → voir les permissions
whoami             → mon utilisateur
id                 → mon UID et mes groupes
chmod +x f.sh      → rendre exécutable
chmod 644 f.txt    → rw-r--r--
chmod 755 script   → rwxr-xr-x
chmod 600 secret   → rw-------
chown user f.txt   → changer propriétaire
umask              → permissions par défaut

Table de référence rapide

Valeur  Permissions   Usage typique
------  -----------   --------------
644     rw-r--r--     fichier texte standard
600     rw-------     fichier privé (clés SSH)
755     rwxr-xr-x     script, dossier public
700     rwx------     dossier privé
777     rwxrwxrwx     ⚠️ à éviter
🏆 Défi final
  1. Créer un dossier coffre
  2. Créer un fichier secret.txt à l'intérieur
  3. Écrire "code: 1234" dedans
  4. Mettre les permissions à 600
  5. Vérifier avec ls -l coffre/ que personne d'autre ne peut le lire
  6. Créer un fichier public.txt, mettre 644
  7. Créer un script run.sh, mettre 755
ls -l coffre/ doit afficher : secret.txt en -rw-------, public.txt en -rw-r--r--, run.sh en -rwxr-xr-x.
Si tu as réussi ce défi, tu comprends mieux la sécurité Unix que 80 % des utilisateurs Linux amateurs.
📚 Sommaire