x Bit im Verzeichnis Arch Linux-Dokumentation

x Bit im Verzeichnis Arch Linux-Dokumentation

Ich beziehe mich auf FolgendesArch Linux Access_Control_Lists-Dokumentation

Es sagt aus:

Erteilen von Ausführungsberechtigungen für private Dateien an einen Webserver

Die folgende Technik beschreibt, wie einem Prozess wie einem Webserver Zugriff auf Dateien gewährt werden kann, die sich im Home-Verzeichnis eines Benutzers befinden, ohne die Sicherheit dadurch zu gefährden, dass der Zugriff der ganzen Welt gewährt wird.

Im Folgenden gehen wir davon aus, dass der Webserver als Benutzer http läuft und gewähren ihm Zugriff auf Geoffreys Home-Verzeichnis /home/geoffrey.

Der erste Schritt besteht darin, dem Benutzer http Ausführungsberechtigungen zu erteilen:

setfacl -m "u:http:--x" /home/geoffrey

Hinweis: Ausführungsberechtigungen für ein Verzeichnis sind erforderlich, damit ein Prozess den Inhalt des Verzeichnisses auflisten kann.

Im obigen Beispiel legen sie also die Ausführungsberechtigungen für den HTTP-Benutzer im Verzeichnis /home/geoffrey fest. Nach meinem Verständnis können Sie den Inhalt eines Verzeichnisses NICHT auflisten, wenn Sie nur das Ausführungsbit für ein Verzeichnis gewähren, aber Sie können auf Dateien zugreifen (wenn Sie deren Namen kennen + die Berechtigungen für bestimmte Dateien im Verzeichnis die richtigen Berechtigungssätze hätten). Wie ist es also möglich, dass setfacl -m "u:http:--x" /home/geoffreyder HTTP-Benutzer (oder der Prozess, auf den sie sich beziehen) den Inhalt des Verzeichnisses auflisten kann? Was übersehe ich?

Vielen Dank im Voraus!

Antwort1

Sie benötigen -xdie Berechtigung für ein Verzeichnis, um darauf und alle darin enthaltenen Dateien zugreifen zu können. Ihr Zugriff auf die Dateien im Verzeichnis hängt jedoch von den Berechtigungen der Dateien ab, nicht vom Verzeichnis selbst. Solange Sie Ausführungsrechte für das übergeordnete Verzeichnis (das Verzeichnis) haben, benötigen Sie nichts anderes, um auf die darin enthaltenen Dateien zuzugreifen. Dies lässt sich am einfachsten anhand eines Beispiels demonstrieren:

$ sudo mkdir dir1 && echo "Hello world!" | sudo tee dir1/file1 && sudo chmod 700 dir1
Hello world!
$ ls -ld dir1/
drwx------ 2 root root 4096 Apr 12 16:09 dir1/
$ sudo ls -l dir1/
total 4
-rw-r--r-- 1 root root 13 Apr 12 16:09 file1

Hat nur rootZugriff. Wenn wir also versuchen, den Inhalt des Verzeichnisses aufzulisten oder die Datei zu caten, schlägt dies fehl:

$ ls dir1/
ls: cannot open directory 'dir1/': Permission denied
$ cat dir1/file1
cat: dir1/file1: Permission denied

Beachten Sie, dass der catVorgang fehlschlägt, obwohl ich Lesezugriff auf die Datei habe. Wenn ich meinem Benutzer jetzt Ausführungszugriff auf das Verzeichnis gebe und es erneut versuche, kann ich die Datei lesen:

$ sudo chmod 711 dir1/
$ ls -l
total 4
drwx--x--x 2 root root 4096 Apr 12 16:09 dir1
$ cat dir1/file1
Hello world!

Ich kann den Inhalt des Verzeichnisses immer noch nicht auflisten, da ich dazu Lesezugriff auf das Verzeichnis benötigen würde, aber ich kann jetzt jede Datei im Verzeichnis lesen, solange ich ihren Pfad kenne.

Die Grundidee ist also gut, nur die letzte Anmerkung ist verwirrend. Um den Inhalt aufzulisten, benötigen Sie Lesezugriff, aber Ausführungszugriff reicht aus, wenn Sie dem httpBenutzer nur Zugriff auf bestimmte Dateien gewähren müssen, deren Pfad bekannt ist.

Obwohl die Anmerkung schlecht formuliert ist, ist sie nicht wirklich falsch, sondern nur unvollständig. Sie benötigen tatsächlich Ausführungsberechtigungen, umvölliglistet den Inhalt eines Verzeichnisses auf. Ohne sie können Sie Dateinamen, aber keine Attribute sehen:

$ ls -l
total 4
drwxr--r-- 2 root root 4096 Apr 12 16:09 dir1
$ ls -l dir1/
ls: cannot access 'dir1/file1': Permission denied
total 0
-????????? ? ? ? ?            ? file1

Antwort2

Ihnen entgeht nichts: Dieses Dokument ist größtenteils korrekt, die Anmerkung jedoch ist falsch.

Es kann über Ihr Home-Verzeichnis in ein anderes Verzeichnis gelangen. Dieses andere Verzeichnis kann lesbar und durchquerbar sein und daher seinen Inhalt auflisten.

Ich denke, dass es eine gute Idee ist, Ihr Zuhause nur überquerbar zu machen, aber ich denke auch, dass Sie Recht haben, die Beschreibung dessen, was es tut, ist falsch.

  • Sie benötigen Leseberechtigung, um die Dateinamen in einem Verzeichnis aufzulisten.
  • Sie benötigen eine Querzugriffsberechtigung für statdie Datei (um etwas über die Datei herauszufinden oder sie zu öffnen).

Haben Sie einen Fehlerbericht eingereicht?

verwandte Informationen