Retour au cours

permissions des fichiers : chmod et chown

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 : d pour 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 :
    1. rwx : Propriétaire (User). L’utilisateur alice a le droit de lire, écrire et exécuter.
    2. r-x : Groupe (Group). Les membres du groupe developers ont le droit de lire et d’exécuter, mais pas de modifier.
    3. --- : Autres (Others). Tous les autres utilisateurs n’ont aucun droit.

Signification des droits r, w, x

DroitPour un FichierPour 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.

ValeurPermissionSignification
7rwxContrôle total
6rw-Lire et écrire
5r-xLire et exécuter
4r--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 -R permet 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

  1. 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 ?
  2. Sécuriser un fichier :

    • Utilisez chmod en mode octal pour que seul vous (le propriétaire) ayez le droit de lire et d’écrire le fichier test.txt (600).
    • Vérifiez le résultat avec ls -l.
  3. Rendre un script exécutable :

    • Créez un fichier script.sh avec le contenu echo "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.
  4. 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 ?