Gérer fichiers et permissions Linux : chmod, chown et ls -l
À la fin de ce tutoriel, vous saurez lire une ligne
ls -l, poser des permissions Linux avecchmod(octal et symbolique), changer propriétaire/groupe avecchown/chgrp, comprendreumask, et manipuler fichiers en sécurité dans un lab/tmp.Niveau : Débutant · Temps estimé : 40–50 min · Versions testées : Ubuntu 22.04 / 24.04, Debian 12 ; notes Rocky/Alma 9 · Dernière vérification : 2026-09-10
Slug proposé :
linux-fichiers-permissions· Série : P5 Linux Basics · Remplace / fusionne : N/A — création
Prérequis
- Avoir suivi Terminal Linux : navigation (pwd, ls, cd, chemins)
- Une machine Linux : Ubuntu 22.04/24.04 ou Debian recommandés ; Rocky/Alma 9 OK
- Compte non-root avec
sudo(uniquement pourchown/chgrpde démo) - Être à l’aise pour taper des commandes dans un terminal
Coût estimé : 0 €. Tout le lab vit dans /tmp/lab-perms — jetable, sans impact système.
Ce que nous allons construire
/tmp/lab-perms/
├── docs/notes.txt (droits lecture/écriture)
├── bin/hello.sh (bit exécutable)
├── secret.env (600 — owner only)
└── shared/ (groupe + sticky bit aperçu)
Lecture ls -l → chmod → chown/chgrp → umask → cp/mv/rm
(Schéma à remplacer par une image locale Excalidraw / draw.io, alt : « Décryptage ls -l, chmod octal/symbolique et lab /tmp/lab-perms ».)
Deuxième chapitre de Linux Basics. Les droits fichiers Linux rappellent un peu les politiques IAM AWS (qui peut faire quoi sur quelle ressource) — voir IAM users, groupes, rôles pour l’analogie cloud.
Étape 1 — Créer le lab et lire les permissions avec ls -l
mkdir -p /tmp/lab-perms/{docs,bin,shared}
cd /tmp/lab-perms
touch docs/notes.txt bin/hello.sh secret.env shared/readme.txt
echo 'echo "hello perms"' > bin/hello.sh
echo 'note lab' > docs/notes.txt
ls -l
ls -ld docs bin shared
Exemple de ligne (les colonnes varient peu entre Ubuntu et Rocky) :
-rw-rw-r-- 1 haythem haythem 10 Sep 10 17:00 docs/notes.txt
| Colonne | Exemple | Sens |
|---|---|---|
| Type + mode | -rw-rw-r-- |
- fichier, d dossier, l lien ; puis 9 bits rwx (user/group/other) |
| Liens | 1 |
Nombre de hard links |
| Owner | haythem |
Propriétaire |
| Group | haythem |
Groupe |
| Taille | 10 |
Octets (ajoutez -h pour K/M) |
| Date | Sep 10 17:00 |
Dernière modification |
| Nom | docs/notes.txt |
Chemin relatif ici |
rwx : r lire, w écrire, x exécuter (fichier) ou traverser (dossier). Sans x sur un répertoire, vous ne pouvez pas cd dedans même si r est présent.
Sortie attendue après ls -l (extrait) : fichiers en -rw-…, dossiers en d…, owner = votre user. Ajoutez ls -lah pour tailles lisibles et fichiers cachés (.).
Tip DevOps : avant un
chmoden prod ou CI, photographiez l’existant :ls -l cheminoustat -c '%a %n' chemin. Rollback = remettre le mode noté, pas777« pour que ça marche ».
Étape 2 — chmod octal : 644, 755, 600
Chaque triplet rwx vaut un chiffre : r=4, w=2, x=1. On additionne.
| Mode | Binaire / lettres | Usage courant |
|---|---|---|
644 |
rw-r--r-- |
Fichier texte / config lisible |
755 |
rwxr-xr-x |
Script ou dossier exécutable/traversable |
600 |
rw------- |
Secret (clés, .env) — owner only |
700 |
rwx------ |
Dossier privé owner |
cd /tmp/lab-perms
chmod 644 docs/notes.txt
chmod 600 secret.env
chmod 755 bin/hello.sh
chmod 755 docs bin shared
ls -l docs/notes.txt secret.env bin/hello.sh
bash bin/hello.sh
Vérifiez : secret.env doit afficher -rw-------. Sur Rocky/Alma, la syntaxe chmod est identique.
Contrôle octal rapide (Ubuntu/Debian/Rocky) :
stat -c '%a %n' /tmp/lab-perms/secret.env /tmp/lab-perms/bin/hello.sh
# Attendu : 600 …/secret.env et 755 …/hello.sh
Étape 3 — chmod symbolique : u+x, g-w, o=
Forme : chmod QuiQuoiSymbole où Qui = u/g/o/a, Quoi = +/-/=, Symbole = r/w/x.
cd /tmp/lab-perms
chmod u+x bin/hello.sh # ajoute exécutable au owner
chmod g-w docs/notes.txt # retire écriture au groupe
chmod o= docs/notes.txt # other : aucun droit
chmod a+r docs/notes.txt # tous : lecture
ls -l docs/notes.txt bin/hello.sh
Astuce : = fixe exactement le triplet ; +/- modifient. Pratique en une ligne : chmod u=rwx,g=rx,o= bin/hello.sh.
Étape 4 — chown et chgrp (lab safe avec sudo)
chown change le propriétaire ; chgrp (ou chown :groupe) change le groupe. Sur les fichiers des autres (ou pour tester), il faut souvent sudo.
cd /tmp/lab-perms
id
# Remplacez $USER si besoin ; on reste owner de notre lab
sudo chown "$USER":"$USER" secret.env
sudo chgrp "$USER" shared/readme.txt
ls -l secret.env shared/readme.txt
Quand utiliser chown ? Après un sudo cp qui a créé un fichier root, ou pour donner un dossier d’app à un utilisateur de service. Ne chown-nez jamais / ou /etc « pour tester ».
Sur Rocky/Alma 9 : mêmes commandes ; le groupe admin sudo s’appelle souvent wheel (vu au tuto utilisateurs).
Piège lab : un pipeline qui fait sudo cp vers /var/www laisse souvent des fichiers root:root. Le service (nginx, node) échoue ensuite en écriture. Corrigez ciblé : sudo chown -R www-data:www-data /var/www/app (adaptez user/groupe), jamais un chown -R depuis /.
Étape 5 — Comprendre umask
umask masque des bits à la création de fichiers/dossiers. Valeur courante 0022 → fichiers 644, dossiers 755 (base théorique 666/777 moins le masque).
umask
umask 0077
touch /tmp/lab-perms/umask-prive.txt
mkdir /tmp/lab-perms/umask-prive-dir
ls -ld /tmp/lab-perms/umask-prive.txt /tmp/lab-perms/umask-prive-dir
umask 0022
Avec 0077, le nouveau fichier est en 600 / dossier 700 : rien pour group/other. Remettez 0022 (ou votre défaut) en fin de session pour ne pas surprendre d’autres outils.
Étape 6 — Sticky bit et setuid (aperçu court)
Trois bits « spéciaux » existent ; retenez l’idée, pas un cours sécu.
- Sticky bit (
chmod +tou1755) sur un dossier : seul le owner d’un fichier (ou root) peut le supprimer — classique sur/tmp(drwxrwxrwt). - setuid / setgid : le binaire s’exécute avec l’identité du owner/groupe du fichier (ex.
passwd). Ne les activez pas sur vos scripts de lab.
ls -ld /tmp
chmod 1777 /tmp/lab-perms/shared
ls -ld /tmp/lab-perms/shared
Le t en fin de mode sur shared signale le sticky bit. Suffisant pour un junior DevOps ; le durcissement avancé viendra plus tard.
Sortie attendue : drwxrwxrwt (ou 1777 en octal via stat -c '%a'). Sans sticky, n’importe quel user avec w sur le dossier peut supprimer le fichier d’un autre — d’où l’intérêt de /tmp.
Étape 7 — mkdir, touch, cp, mv, rm (prudence)
cd /tmp/lab-perms
mkdir -p archive/2026
touch docs/todo.txt
cp docs/notes.txt archive/2026/notes.bak
mv docs/todo.txt docs/todo-renamed.txt
cp -r docs docs-copie
# suppression ciblée — jamais rm -rf /
rm docs/todo-renamed.txt
rm -r docs-copie
ls -la
| Commande | Rôle | Prudence |
|---|---|---|
mkdir -p |
Crée dossiers (parents inclus) | OK |
touch |
Crée fichier vide / maj date | OK |
cp / cp -r |
Copie fichier / arbre | Vérifier destination |
mv |
Déplace ou renomme | Écrase si cible existe |
rm / rm -r |
Supprime | Pas de / ; préférez /tmp/... |
Étape 8 — Vérification
cd /tmp/lab-perms
ls -l
stat -c '%a %n' secret.env bin/hello.sh docs/notes.txt
namei -l /tmp/lab-perms/bin/hello.sh
bash bin/hello.sh
umask
Validé si : vous lisez type+rwx+owner sur ls -l, secret.env est en 600, hello.sh s’exécute, et vous savez expliquer umask en une phrase.
Nettoyage — lab jetable
rm -rf /tmp/lab-perms
# umask 0022 # si vous l’aviez changé
Rien d’autre à désinstaller. Jamais rm -rf / ni chmod -R 777 /.
Erreurs fréquentes
| Symptôme | Cause | Correction |
|---|---|---|
Permission denied sur script |
Pas de bit x |
chmod u+x fichier ou bash fichier |
Permission denied sur cd dossier |
Dossier sans x |
chmod u+x dossier |
Fichier root après sudo cp |
Owner = root | sudo chown "$USER":"$USER" fichier |
chmod 777 partout |
Réflexe dangereux | Préférer 644/755/600 |
Secrets en 644 |
umask / défaut trop ouvert | chmod 600 + umask 0077 le temps du lab |
cp -r puis droits bizarres |
Copie hors lab / ACL | Rester dans /tmp/lab-perms ; ls -l après copie |
Script OK en bash f mais pas ./f |
Pas de x ou shebang |
chmod u+x f + #!/usr/bin/env bash en L1 |
Quiz (3 questions)
1. Que signifie le premier caractère d dans drwxr-xr-x ?
– A. Fichier caché
– B. Répertoire (directory)
– C. Lien symbolique
2. Quelle est la différence typique entre chmod 644 et chmod 755 ?
– A. 644 = fichier lisible ; 755 ajoute l’exécution (script/dossier)
– B. 755 retire tous les droits other
– C. Aucune, ce sont des alias
3. Quand utiliser chown en lab ?
– A. Pour chaque ls
– B. Pour corriger un owner (ex. fichier créé en root) sans toucher au système entier
– C. À la place de chmod
Réponses : 1‑B · 2‑A · 3‑B
FAQ
Que signifie rwx dans ls -l ?
Les neuf bits après le type se lisent par triplets : user, group, other. r = lecture, w = écriture, x = exécution (fichier) ou traversée (dossier). Exemple : -rwxr-xr-x = owner tout, groupe et other lecture+exécution.
Différence chmod 644 et 755 ?
644 (rw-r--r--) convient aux fichiers de données : owner lit/écrit, les autres lisent. 755 (rwxr-xr-x) ajoute x : scripts exécutables et répertoires traversables. Les secrets passent plutôt en 600.
Quand utiliser chown ?
Quand le propriétaire (ou le groupe) est incorrect — souvent après un sudo qui a créé un fichier en root. Utilisez sudo chown user:group fichier de façon ciblée ; ne « réparez » jamais tout le disque avec un chown -R sur /.
Pourquoi umask 0022 et pas 0000 ?
0000 créerait des fichiers monde-inscriptibles (666/777) — inacceptable hors bac à sable extrême. 0022 (défaut courant) retire write à group/other : fichiers 644, dossiers 755. Pour un secret local de lab, 0077 le temps de la session est plus strict.
Pour aller plus loin
man chmod,man chown,man umask- Prochain tuto : utilisateurs, groupes et
sudosans rester root au quotidien
Maillage série Linux Basics (P5)
| ← Précédent | Terminal Linux : navigation |
| → Suivant | Utilisateurs Linux et sudo |
| Hub | Linux Basics |
| Aussi | Analogie droits cloud : IAM users, groupes, rôles |
Meta publication (à remplir dans Rank Math / SEO)
- Title SEO : Permissions Linux : chmod, chown, umask et ls -l (2026)
- Meta description (≤ 155) : Apprenez à lire
ls -l, poser des droits avec chmod/chown, comprendre rwx et umask. Lab DevOps safe dans /tmp. - Focus keyphrase : permissions linux
- KW secondaires : chmod, chown, umask, ls -l, droits fichiers linux
- Schemas Rank Math : Article + HowTo (étapes lab) + FAQ (3 questions ci-dessus)
- Image mise en avant :
assets/web/devopelastichayway/cover-linux-fichiers-permissions-1200x630.webp(Visuels Linux — WebP 1200×630) - Catégorie : Linux · Niveau : Débutant
- Slug :
linux-fichiers-permissions
← Retour parcours Linux — Basics, Admin, Réseau & Sécurité, Shell & Automation.