Lors de l'application d'autorisations à des répertoires sous Linux, les bits d'autorisation ont des significations différentes de celles des fichiers normaux.
- Le bit de lecture (
r
) permet à l'utilisateur concerné de lister les fichiers dans le répertoire - Le bit d'écriture (
w
) permet à l'utilisateur concerné de créer, renommer ou supprimer des fichiers dans le répertoire et de modifier les attributs du répertoire - Le bit d'exécution (
x
) permet à l'utilisateur concerné d'entrer dans le répertoire et d'accéder aux fichiers et répertoires qu'il contient - Le morceau collant (
T
, out
si le bit d'exécution est défini pour les autres) indique que les fichiers et répertoires de ce répertoire ne peuvent être supprimés ou renommés que par leur propriétaire (ou racine)
Tout d'abord, réfléchissez :qu'est-ce qu'un répertoire ? C'est juste une liste d'éléments (fichiers et autres répertoires) qui y vivent. Donc :répertoire =liste de noms.
Lire le bit =Si défini, vous pouvez lire cette liste. Ainsi, par exemple, si vous avez un répertoire nommé poems
:
- Vous pouvez
ls poems
et vous obtiendrez une liste d'éléments vivant à l'intérieur (-l
ne révélera aucun détail !). - Vous pouvez utiliser la complétion de la ligne de commande, c'est-à-dire
touch poems/so <TAB> poems/somefile
. - Vous ne pouvez pas faire
poems
votre répertoire de travail (c'est-à-direcd
dedans).
Bit d'écriture =Si défini, vous pouvez modifier cette liste, c'est-à-dire que vous pouvez {ajouter, renommer, supprimer} des noms dessus. Mais! Vous ne pouvez réellement le faire que si le bit d'exécution est également défini.
Exécuter le bit =Faites de ce répertoire votre répertoire de travail, c'est-à-dire cd
dans ça. Vous avez besoin de cette autorisation si vous souhaitez :
- accéder (lire, écrire, exécuter) les éléments vivants à l'intérieur.
- modifier la liste elle-même, c'est-à-dire ajouter, renommer, supprimer des noms dessus (bien sûr, le bit d'écriture doit être défini sur le répertoire).
Cas intéressant 1 :Si vous disposez d'autorisations d'écriture et d'exécution sur un répertoire, vous pouvez {supprimer, renommer} les éléments qui s'y trouvent même si vous n'avez pas d'autorisation d'écriture sur ces éléments. (utilisez un morceau collant pour éviter cela)
Cas intéressant 2 :Si vous avez l'autorisation d'exécution (mais pas d'écriture) sur un répertoire ET que vous avez l'autorisation d'écriture sur un fichier qui s'y trouve, vous ne pouvez pas supprimer le fichier (car cela implique de le supprimer de la liste). Cependant, vous pouvez effacer son contenu, par ex. s'il s'agit d'un fichier texte, vous pouvez utiliser vi pour l'ouvrir et tout supprimer. Le fichier sera toujours là, mais il sera vide.
Résumé :
Lire le bit =Vous pouvez lire les noms sur la liste.
Bit d'écriture =Vous pouvez {ajouter, renommer, supprimer} des noms sur la liste SI le bit d'exécution est également défini.
Exécuter le bit =Vous pouvez faire de ce répertoire votre répertoire de travail.
PS :L'article mentionné par Kusalananda est une bonne lecture.
J'ai préparé ce tableau avec toutes les autorisations possibles et leurs effets pratiques.
(*) Uniquement les noms de fichiers :d'autres attributs tels que la taille ou la date ne sont pas accessibles. Par exemple. vous pouvez utiliser la touche de tabulation pour la saisie semi-automatique mais pas la commande ls.
Quelques réflexions :
- Avec X non défini , R et W sont pour la plupart inutiles.
- X seul désactivant RW vous donne un faux sentiment de sécurité puisque vous pouvez lire et écrire aveuglément le contenu des fichiers et accéder aux sous-répertoires. Vous devez vous assurer que tous les enfants directs du répertoire disposent d'autorisations explicites.
- Vous utiliserez rarement d'autres valeurs que :
- 0 :Pas d'accès.
- 1 :Accès minimum permettant le franchissement.
- 5 :Autoriser la lecture/écriture, mais pas la modification de la structure de l'arborescence de répertoires elle-même.
- 7 : Accès complet.