Wenn ich einen Stammordner mit einer eingeschränkten Berechtigung habe, sagen wir 600, und wenn die untergeordneten Ordner / Dateien die Berechtigung 777 haben, kann jeder die untergeordnete Datei lesen / schreiben / ausführen, obwohl der Stammordner 600 hat?
permissions
directory
Ken Li
quelle
quelle
Antworten:
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ürdir
unddir/subdir
sowie die Berechtigungenfile
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 handeltdir
, benötigen Sie die Ausführungsberechtigung fürdir
den Zugriff aufsym/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 tabujoe
(setfacl -m user:joe:0 / /home
) und/home/joe
istjoe
‚Home - Verzeichnis, dannjoe
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, zBsetfacl -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.
quelle
Die Berechtigung für Stammordner beschränkt die Berechtigung für untergeordnete Dateien. Du kannst es versuchen.
Ich verstehe das:
quelle
Sie können das untergeordnete Verzeichnis beschreibbar machen, auch wenn das übergeordnete Verzeichnis nicht beschreibbar ist. Ich mache das für Gruppen.
Beispiel: Das übergeordnete Verzeichnis gehört dem Gruppencodierer
untergeordnetes Verzeichnis
Sie (ein Mitglied der Codierungsgruppe) können weiterhin in das untergeordnete Verzeichnis schreiben, nicht jedoch in das übergeordnete Verzeichnis.
quelle
Sie können eine feste Verknüpfung erstellen, um auf die Datei zuzugreifen, auch wenn Sie keine Ausführungsberechtigung für das übergeordnete Verzeichnis haben. Der Haken hier ist jedoch, dass Sie die feste Verknüpfung erstellen müssen, bevor Sie Ihre Ausführungsberechtigung für das übergeordnete Verzeichnis verlieren
quelle