Warum muss ein Ordner ausführbar sein?

27

Erlaubnis für Dateien:

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

Und für Ordner:

chmod 774 myFolder // rwxrwxr--

Wenn ich nur die Berechtigung "Lesen und Schreiben" verwende, werden die Inhalte der Ordner nicht angezeigt.

Was ist der Grund dafür?

Caio
quelle

Antworten:

38

Verzeichnisse (normalerweise werden sie in * nix nicht als Ordner bezeichnet) haben eine andere Bedeutung für die Berechtigungsbits als normale Dateien.

Beim Schreiben von Verzeichnissen können neue Dateien darin erstellt werden.

Mit Lesen können Sie die darin enthaltenen Dateien auflisten.

Execute ermöglicht es Ihnen, darauf zuzugreifen und auf Dateien (oder andere Verzeichnisse) zuzugreifen.

Daenyth
quelle
2
Eine einfache Möglichkeit, sich zu erinnern, besteht darin, sich vorzustellen, als würde man auf etwas doppelklicken. Wenn Sie auf das Verzeichnis doppelklicken (oder cd ) Sie geben es ein (führen es aus).
John T
Denken Sie daran, dass Sie mit dem reinen Schreibzugriff auf ein Verzeichnis keine neuen Dateien erstellen können. Dazu benötigen Sie auch die Ausführungsberechtigung für das Verzeichnis.
Matthias Braun
10

Da Sie ein Verzeichnis nicht ausführen können, wurde das Ausführungsbit besser verwendet. Mit dem Ausführungsbit für ein Verzeichnis können Sie auf Elemente zugreifen, die sich innerhalb des Verzeichnisses befinden, auch wenn Sie den Verzeichnisinhalt nicht auflisten können.

$ 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!

Von dem chmod manpage:

Die Buchstaben rwxXst wählen Dateimodusbits für die betroffenen Benutzer aus: read (r), write (w), ausführen (oder nach Verzeichnissen suchen) (x) , nur ausführen / suchen, wenn die Datei ein Verzeichnis ist oder bereits Ausführungsberechtigung für einen Benutzer (X) hat, Benutzer- oder Gruppen-ID bei Ausführung (en), eingeschränktes Löschflag oder Sticky-Bit (t) festlegen.

Zaz
quelle
1

Das "Ausführen" -Bit bedeutet "Suchen", wenn es auf Verzeichnisse angewendet wird (von man chmod ). Dies erscheint sinnvoll, da execute für ein Verzeichnis keine Bedeutung hat.


quelle
1

Durch Ausführen von Berechtigungen für ein Verzeichnis können Sie es durchlaufen, um darin enthaltene Ressourcen zu verwenden.

Ignacio Vazquez-Abrams
quelle
0

Das x Bit in einem Ordner bezieht sich auf Indexierung / Verzeichnissuche / Auflistung; Keines davon ist möglich, wenn Sie das bisschen niedrig halten.

Hier ist ein Beispiel für seine Verwendung: Wenn Sie einen Benutzer mit eingeschränkten Leseberechtigungen für jedes Verzeichnis außer seinem Heimverzeichnis haben möchten, sagen wir /home/dummydann musst du machen / und /home habe den x Bit gesetzt, sonst kann er nicht einmal in sein Home-Verzeichnis gelangen.

Platinum Azure
quelle