Pourquoi un dossier doit-il être exécutable?

29

Autorisation pour les fichiers:

chmod 664 myFile // rw-rw-r--

Et pour les dossiers:

chmod 774 myFolder // rwxrwxr--

Si j'utilise uniquement l'autorisation "lecture et écriture", les dossiers ne montreront pas leur contenu.

Quelle en est la raison?

Caio
la source

Réponses:

14

Comme vous ne pouvez pas «exécuter» un répertoire, le bit d'exécution a été mieux utilisé. Le bit d'exécution sur un répertoire vous permet d'accéder aux éléments qui se trouvent dans le répertoire, même si vous ne pouvez pas lister le contenu des répertoires.

$ mkdir -p dir/
$ echo 'Hello World!' > dir/file
$ chmod 000 dir/
$ ls -al dir/
ls: cannot open directory dir: Permission denied
$ cat dir/file
cat: dir/file: Permission denied
$ chmod +x dir/
$ ls -al dir/
ls: cannot open directory dir: Permission denied
$ cat dir/file
Hello World!

Depuis la chmodpage de manuel:

Les lettres rwxXst sélectionnent les bits du mode fichier pour les utilisateurs concernés: lecture (r), écriture (w), exécution (ou recherche de répertoires) (x) , exécution / recherche uniquement si le fichier est un répertoire ou a déjà l'autorisation d'exécution pour certains utilisateur (X), définissez l'ID utilisateur ou de groupe sur les exécutions, l'indicateur de suppression restreinte ou le bit collant (t).

Zaz
la source
42

Les répertoires (ils ne sont généralement pas appelés dossiers dans * nix) ont une signification différente pour les bits d'autorisation que les fichiers normaux.

Pour les répertoires, l'écriture permet de créer de nouveaux fichiers à l'intérieur.

Lire vous permet de répertorier les fichiers à l'intérieur.

Exécuter vous permet de le saisir et d'accéder aux fichiers (ou autres répertoires) à l'intérieur.

Daenyth
la source
2
Un moyen facile de se souvenir est d'imaginer l'exécution comme un double-clic sur quelque chose. Lorsque vous double-cliquez sur le répertoire (ou cd) vous le saisissez (l'exécutez).
John T
Gardez à l'esprit que le simple accès en écriture sur un répertoire ne vous permettra pas de créer de nouveaux fichiers. Pour ce faire, vous avez également besoin du permis d'exécution sur le répertoire.
Matthias Braun
Est-ce que «accéder aux fichiers (ou à d'autres répertoires)» signifie que je peux voir les fichiers, c'est-à-dire les lister mais ne peux pas les voir ou je peux voir les fichiers c'est-à-dire les lister et les lire également?
vadasambar
2

Les autorisations d'exécution sur un répertoire vous permettent de le parcourir pour utiliser les ressources qu'il contient.

Ignacio Vazquez-Abrams
la source
1

Le bit "exécuter" signifie en fait "rechercher" lorsqu'il est appliqué aux répertoires (de man chmod). Cela semble raisonnable car exécuter n'a aucun sens pour un répertoire.


la source
0

Le xbit sur un dossier fait référence à l'indexation / recherche de répertoire / listage; rien de tout cela n'est possible si vous gardez ce bit bas.

Voici un exemple de son utilisation: si vous voulez qu'un utilisateur avec des autorisations de lecture limitées sur chaque répertoire, mais son domicile, disons /home/dummy, alors vous devez créer /et /homeavoir le xbit défini, sinon il ne peut même pas accéder à son répertoire personnel.

Platine Azure
la source