
Les droits : lire (r), écrire (w), exécuter (x) pour l'utilisateur (owner), le groupe, et les autres
Comprenez les droits de base (lecture, écriture, exécution) sous Linux et comment ils s'appliquent à l'utilisateur propriétaire, au groupe et aux autres.
Les fondations du contrôle d'accès : types de droits et catégories d'utilisateurs
Au coeur du système de permissions de Linux se trouvent trois types de droits fondamentaux qui peuvent être accordés ou refusés pour chaque fichier et répertoire. Ces droits déterminent ce que les utilisateurs peuvent faire avec ces éléments. Parallèlement, Linux définit trois catégories d'identités auxquelles ces droits peuvent être appliqués : l'utilisateur propriétaire du fichier (celui qui l'a créé, en général), le groupe propriétaire du fichier, et enfin, tous les autres utilisateurs du système. La combinaison de ces droits et de ces catégories forme la base du contrôle d'accès.
Comprendre clairement la signification de chaque droit et comment il interagit avec le type d'objet (fichier ou répertoire) est la première étape essentielle pour maîtriser la gestion des permissions. Cette compréhension vous permettra d'interpréter correctement les permissions existantes et de les définir de manière appropriée pour sécuriser vos données et permettre la collaboration lorsque c'est nécessaire.
Ce sous-chapitre détaille ces trois droits – lire, écrire, exécuter – et explique leur signification spécifique pour les fichiers et pour les répertoires, ainsi que la manière dont ils sont associés aux trois classes d'utilisateurs.
Les trois types de permissions de base : r, w, x
Chaque fichier et répertoire sous Linux possède un ensemble de permissions qui contrôlent l'accès. Ces permissions sont généralement représentées par les lettres r (read/lecture), w (write/écriture), et x (execute/exécution). Leur signification varie légèrement selon qu'elles s'appliquent à un fichier ou à un répertoire.
- Lire (
r) : Permet d'ouvrir et de lire le contenu du fichier. Pour un fichier texte, cela signifie pouvoir voir ce qu'il contient. Pour un fichier binaire, cela signifie pouvoir en lire les données brutes (ce qui n'est pas toujours directement interprétable par un humain, mais nécessaire pour qu'un programme l'utilise). - Ecrire (
w) : Permet de modifier ou d'écraser le contenu du fichier. Cela inclut la possibilité de le tronquer (vider son contenu) ou d'y ajouter des données. Attention, pour supprimer un fichier, ce n'est pas la permission d'écriture sur le fichier lui-même qui est requise, mais la permission d'écriture sur le répertoire qui le contient (voir ci-dessous). - Exécuter (
x) : Permet d'exécuter le fichier s'il s'agit d'un programme ou d'un script. Pour un script (shell, Python, etc.), le système doit pouvoir le lire pour l'interpréter, donc la permission de lecture est souvent nécessaire en conjonction avec l'exécution. Pour un binaire compilé, la permission d'exécution seule peut suffire. Ce droit n'a généralement pas de sens pour les fichiers de données comme les images ou les documents texte.
- Lire (
r) : Permet de lister le contenu du répertoire, c'est-à-dire de voir les noms des fichiers et des sous-répertoires qu'il contient (par exemple, avec la commandels). Sans ce droit, vous ne pouvez pas savoir ce qu'il y a dans le répertoire, même si vous avez le droit d'exécution sur ce répertoire. - Ecrire (
w) : Permet de modifier le contenu du répertoire. Cela signifie pouvoir créer de nouveaux fichiers ou sous-répertoires à l'intérieur, supprimer des fichiers ou des sous-répertoires existants (quel que soit leur propriétaire ou leurs permissions propres !), et renommer des fichiers ou des sous-répertoires qu'il contient. C'est un droit puissant et souvent source de confusion : pour supprimer un fichier, il faut le droit d'écriture sur le répertoire parent, pas nécessairement sur le fichier lui-même. - Exécuter (
x) : Permet d'accéder au répertoire (c'est-à-dire de le "traverser") et d'accéder aux fichiers et sous-répertoires qu'il contient, à condition d'avoir également les permissions nécessaires sur ces éléments internes. Par exemple, pour accéder à/home/user/mondoc.txt, vous devez avoir le droit d'exécution sur/, sur/home, et sur/home/user. Sans le droitxsur un répertoire, vous ne pouvez pas y entrer aveccd, ni accéder à son contenu, même si vous avez le droitrsur ce répertoire.
Un tiret (-) est utilisé pour indiquer qu'une permission spécifique n'est pas accordée.
Les trois catégories d'identités : utilisateur, groupe, autres
Ces trois permissions (r, w, x) sont définies pour trois ensembles distincts d'identités pour chaque fichier ou répertoire :
- Utilisateur propriétaire (Owner/User -
u) : C'est la personne qui possède le fichier ou le répertoire. En général, c'est l'utilisateur qui l'a créé. Le propriétaire a souvent le plus de contrôle sur ses propres fichiers et peut généralement changer leurs permissions. - Groupe propriétaire (Group -
g) : Chaque fichier est également associé à un groupe. Tous les utilisateurs membres de ce groupe peuvent se voir accorder des permissions spécifiques sur le fichier. Cela permet de partager des fichiers avec un ensemble défini d'utilisateurs sans donner accès à tout le monde. Par défaut, lorsqu'un utilisateur crée un fichier, le groupe propriétaire est souvent son groupe principal. - Autres (Others -
o) : Cette catégorie englobe tous les autres utilisateurs du système qui ne sont ni le propriétaire du fichier, ni membres du groupe propriétaire. Les permissions définies pour "autres" s'appliquent à quiconque ne rentre pas dans les deux premières catégories.
Ainsi, pour chaque fichier ou répertoire, il y a en réalité neuf bits de permission de base :
- Permissions pour l'utilisateur (r, w, x)
- Permissions pour le groupe (r, w, x)
- Permissions pour les autres (r, w, x)
Par exemple, un fichier pourrait avoir les permissions rw-r--r--. Cela signifierait :
- L'utilisateur propriétaire peut lire et écrire (
rw-). - Les membres du groupe propriétaire peuvent seulement lire (
r--). - Les autres utilisateurs peuvent seulement lire (
r--).
Nous verrons dans le prochain sous-chapitre comment cette chaîne de caractères est affichée par la commande ls -l et comment l'interpréter plus en détail, y compris le premier caractère qui indique le type de fichier (par exemple, d pour un répertoire ou - pour un fichier ordinaire).