Objectifs
- Lire et interpréter le bloc de permissions affiché par la commande
ls -l. - Comprendre la signification des trois droits fondamentaux : lire (
r), écrire (w) et exécuter (x). - Modifier les permissions avec
chmod, en utilisant les syntaxes symbolique et octale. - Changer le propriétaire d’un fichier avec
chown.
Le système de permissions est au cœur de la sécurité et du multi-utilisateur sous Linux.
Lire les permissions
La commande ls -l vous donne une vue détaillée des permissions d’un fichier.
drwxr-x--- 1 alice developers 4096 Jul 12 11:00 projet_secret
Concentrons-nous sur le premier bloc : drwxr-x---.
- Le premier caractère (
d) indique le type :dpour un dossier (directory),-pour un fichier. - Les 9 caractères suivants sont trois groupes de trois, représentant les permissions pour trois entités distinctes :
rwx: Propriétaire (User). L’utilisateuralicea le droit de lire, écrire et exécuter.r-x: Groupe (Group). Les membres du groupedevelopersont le droit de lire et d’exécuter, mais pas de modifier.---: Autres (Others). Tous les autres utilisateurs n’ont aucun droit.
Signification des droits r, w, x
| Droit | Pour un Fichier | Pour un Dossier |
|---|---|---|
r (read) | Lire le contenu du fichier. | Lister le contenu du dossier (voir les noms des fichiers à l’intérieur). |
w (write) | Modifier le contenu du fichier. | Créer, supprimer ou renommer des fichiers à l’intérieur du dossier. |
x (execute) | Exécuter le fichier (s’il s’agit d’un script ou d’un programme). | Entrer dans le dossier (avec cd). |
Note importante : Pour pouvoir accéder à un fichier, vous devez avoir la permission d’exécution (x) sur tous les dossiers parents qui y mènent.
chmod : Changer les permissions
chmod (Change Mode) est la commande pour modifier les permissions.
1. Syntaxe Symbolique (relative)
Elle est intuitive et permet d’ajouter ou de retirer des droits de manière ciblée.
- Qui :
u(user),g(group),o(others),a(all). - Action :
+(ajouter),-(retirer),=(définir exactement). - Quoi :
r,w,x.
# Ajouter la permission d'exécution pour le propriétaire
chmod u+x mon_script.sh
# Retirer la permission d'écriture pour tout le monde sauf le propriétaire
chmod go-w mon_fichier.txt
# Donner les droits rwx au propriétaire et seulement r aux autres
chmod u=rwx,go=r mon_dossier
2. Syntaxe Octale (absolue)
C’est une notation numérique qui permet de définir tous les droits d’un seul coup. C’est très utilisé dans les scripts car c’est concis. On additionne la valeur de chaque droit : r=4, w=2, x=1.
| Valeur | Permission | Signification |
|---|---|---|
| 7 | rwx | Contrôle total |
| 6 | rw- | Lire et écrire |
| 5 | r-x | Lire et exécuter |
| 4 | r-- | Lecture seule |
| 0 | --- | Aucun droit |
On spécifie ensuite une valeur pour le propriétaire, le groupe, et les autres.
# rwx r-x r-x -> 755 (standard pour un script ou un dossier)
chmod 755 mon_script.sh
# rw- r-- r-- -> 644 (standard pour un fichier public)
chmod 644 page_web.html
# rw- --- --- -> 600 (standard pour un fichier privé, ex: clé SSH)
chmod 600 ~/.ssh/id_ed25519
chown : Changer le propriétaire
chown (Change Owner) permet de changer le propriétaire et/ou le groupe d’un fichier.
chown <nouvel_utilisateur> <fichier>chown <nouvel_utilisateur>:<nouveau_groupe> <fichier>- L’option
-Rpermet d’appliquer le changement de manière récursive à un dossier et tout son contenu.
# Donner le fichier à l'utilisateur 'bob'
sudo chown bob rapport.txt
# Donner le dossier du projet à l'utilisateur 'alice' et au groupe 'webdev'
sudo chown -R alice:webdev /var/www/mon_site
Exercices
-
Analyse :
- Créez un fichier
test.txt(touch test.txt). - Exécutez
ls -l test.txt. Quelles sont ses permissions par défaut ? Pouvez-vous l’exécuter ?
- Créez un fichier
-
Sécuriser un fichier :
- Utilisez
chmoden mode octal pour que seul vous (le propriétaire) ayez le droit de lire et d’écrire le fichiertest.txt(600). - Vérifiez le résultat avec
ls -l.
- Utilisez
-
Rendre un script exécutable :
- Créez un fichier
script.shavec le contenuecho "Hello !". - Essayez de l’exécuter (
./script.sh). Vous devriez avoir une erreur “Permission denied”. - Utilisez
chmod(en mode symbolique ou octal) pour vous donner la permission d’exécution. - Ré-exécutez le script. Il devrait maintenant fonctionner.
- Créez un fichier
-
Permissions sur un dossier :
- Créez un dossier
prive. - Donnez-lui les permissions
rwx------(700). - Essayez de vous y déplacer (
cd prive). - Maintenant, retirez-vous la permission d’exécution (
chmod u-x prive). - Essayez à nouveau de vous y déplacer ou de lister son contenu (
ls prive). Que se passe-t-il ?
- Créez un dossier