Die genaue Regel lautet: Sie können ein Verzeichnis genau dann durchlaufen, wenn Sie über die Berechtigung zum Ausführen verfügen.
Für den Zugriff dir/subdir/filebenötigen Sie beispielsweise die Ausführungsberechtigung für dirund dir/subdirsowie die Berechtigungen filefür die gewünschte Zugriffsart. Ich bin mir nicht sicher, ob es universell ist, dass Sie eine Ausführungsberechtigung für das aktuelle Verzeichnis benötigen, um über einen relativen Pfad auf eine Datei zuzugreifen (unter Linux).
Die Art und Weise, wie Sie auf eine Datei zugreifen, ist von Bedeutung. Wenn Sie beispielsweise über Ausführungsberechtigungen verfügen, /foo/barjedoch nicht über /fooIhr aktuelles Verzeichnis /foo/bar, können Sie auf Dateien /foo/barüber einen relativen Pfad zugreifen, jedoch nicht über einen absoluten Pfad. /foo/barIn diesem Szenario können Sie nicht ändern . Ein privilegierterer Prozess hat vermutlich stattgefunden, cd /foo/barbevor er unprivilegiert blieb. Wenn eine Datei mehrere feste Links hat, bestimmt der Pfad, über den Sie darauf zugreifen, Ihre Zugriffsbeschränkungen.
Symbolische Verknüpfungen ändern nichts. Der Kernel verwendet die Zugriffsrechte des aufrufenden Prozesses, um diese zu durchlaufen. Wenn es sich beispielsweise symum einen symbolischen Link zum Verzeichnis handelt dir, benötigen Sie die Ausführungsberechtigung für dirden Zugriff auf sym/foo. Die Berechtigungen für den Symlink selbst können je nach Betriebssystem und Dateisystem von Bedeutung sein oder auch nicht (einige respektieren sie, andere ignorieren sie).
Durch das Entfernen der Ausführungsberechtigung aus dem Stammverzeichnis wird ein Benutzer effektiv auf einen Teil der Verzeichnisstruktur beschränkt (in die sich ein privilegierterer Prozess ändern muss). Dies erfordert, dass Zugriffssteuerungslisten verwendet werden. Wenn zum Beispiel /und /homesind tabu joe( setfacl -m user:joe:0 / /home) und /home/joeist joe‚Home - Verzeichnis, dann joenicht in der Lage sein , den Rest des Systems zuzugreifen (einschließlich Laufe Shell - Skripten mit /bin/shoder dynamisch verknüpfte Binärdateien , die für den Zugriff benötigen /lib, so dass Sie‘ d müssen für den praktischen Gebrauch tiefer gehen, zB setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib).
Die Leseberechtigung für ein Verzeichnis gibt das Recht, die Einträge aufzulisten. Gelegentlich ist es nützlich, Ausführungsberechtigungen ohne Leseberechtigung zu erteilen: Die Namen von Einträgen dienen als Kennwörter für den Zugriff darauf. Ich kann mir keine Verwendung vorstellen, um einem Verzeichnis eine Lese- oder Schreibberechtigung ohne Ausführungsberechtigung zu erteilen.