Ayant travaillé avec Linux pendant des années et me retrouvant avec du temps libre, j'ai décidé de revisiter quelques bases. J'ai donc relu les informations sur les autorisations (sans vérifier le code source), et ses cas particuliers pour les dossiers, et j'ai trouvé une nouvelle façon (pour moi au moins ...) de penser aux autorisations sur les dossiers (pour un utilisateur spécifique / groupe / autres): J'imagine un dossier comme un tableau avec deux colonnes, comme ceci:
filename | inode
foo | 111
bar | 222
L' autorisation de lecture signifie que vous pouvez lire (et répertorier) la colonne de gauche du tableau, l' autorisation d' écriture correspond à l'ajout et à la suppression d'entrées dans la table, et l' autorisation d' exécution correspond à la possibilité de traduire du nom de fichier en inode; c'est-à-dire que vous pouvez accéder au contenu du dossier.
J'ai fait quelques expériences, et les résultats sont tous cohérents avec ma "vision du monde", mais une conclusion semble incontournable: qu'un dossier avec des autorisations d-w-------
est totalement inutile. Élaboration: vous ne pouvez pas lister son contenu, vous ne pouvez pas lire les fichiers que vous savez exister à l'intérieur (parce que vous ne pouvez pas traduire les noms en inodes), vous ne pouvez pas supprimer ou renommer ou ajouter des fichiers, car là encore cela impliquerait une traduction , et vous ne pouvez même pas ajouter de liens physiques (car, je suppose, cela signifierait ajouter un nom ainsi qu'un numéro d'inode, ce qui signifie que vous sauriez les deux, ce qui à son tour, encore une fois, présume, viole le but de la suppression de l'autorisation d'exécution) . Et bien sûr, s'il y a des fichiers à l' intérieur d' un tel dossier, vous ne pouvez pas supprimer ce dossier soit, parce que vous ne pouvez pas supprimer son contenu.
Alors ... je voudrais poser deux questions:
- Cette analogie est-elle correcte ou est-ce une grosse erreur?
- Indépendamment de la réponse précédente, existe-t-il une situation où avoir un dossier avec les autorisations décrites est approprié?
mkdir foo ; chmod 200 foo ; touch foo/bar
avoir obtenu touch: cannot touch ‘foo/bar’: Permission denied
. Cela se produit même si foo / bar existe déjà. Je teste en bash (Arch Linux).