Le drapeau "exécuter" sur le répertoire donne accès aux objets du système de fichiers sous le répertoire. Le drapeau "lire" donne accès au contenu du répertoire. Donc en commençant par :
test
file1
file2
Si vous supprimez le drapeau d'exécution, vous pouvez toujours lister le contenu :
>chmod -x test
> echo test/*
test/file1 test/file2
Mais vous ne pouvez pas accéder au contenu :
>cat test/file1
cat: test/file1: Permission denied
Vous ne pouvez même pas obtenir d'informations sur ces fichiers car cela se fait en accédant à leur inode, ce que le manque de privilèges d'exécution vous empêche de faire :
stat test/file1
stat: cannot stat 'test/file1': Permission denied
Maintenant, si vous gardez le privilège d'exécution, mais supprimez le privilège de lecture, la situation est inversée :
>chmod +x-r test
Vous ne pouvez pas lister le contenu du répertoire :
>ls test
ls: cannot open directory 'test': Permission denied
Mais si vous savez ce qu'il contient, vous pouvez accéder aux inodes correspondants :
>stat test/file1
Fichier : 'test/file1'
Taille : 6 Blocs : 8 Bloc d'E/S : 4096 fichier régulier
Périphérique : fd01h/64769d Inode : 24642501 Liens : 1
Accès : (0644/-rw-r--r--) Uid : ( 1000/ me) Gid : ( 1000/ me)
Accès : 2019-06-01 09:07:30.300676842 +0200
Modifié : 2019-06-01 08:53:14.811834525 +0200
Changé : 2019-06-01 08:53:14.811834525 +0200
Et ainsi accéder au contenu :
>cat test/file1
File1