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/file
benötigen Sie beispielsweise die Ausführungsberechtigung für dir
und dir/subdir
sowie die Berechtigungen file
fü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/bar
jedoch nicht über /foo
Ihr aktuelles Verzeichnis /foo/bar
, können Sie auf Dateien /foo/bar
über einen relativen Pfad zugreifen, jedoch nicht über einen absoluten Pfad. /foo/bar
In diesem Szenario können Sie nicht ändern . Ein privilegierterer Prozess hat vermutlich stattgefunden, cd /foo/bar
bevor 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 sym
um einen symbolischen Link zum Verzeichnis handelt dir
, benötigen Sie die Ausführungsberechtigung für dir
den 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 /home
sind tabu joe
( setfacl -m user:joe:0 / /home
) und /home/joe
ist joe
‚Home - Verzeichnis, dann joe
nicht in der Lage sein , den Rest des Systems zuzugreifen (einschließlich Laufe Shell - Skripten mit /bin/sh
oder 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.