Verzeichnis mit + x Erlaubnis, Eltern ohne. Wann wäre das sinnvoll?


11

Angenommen, ich habe einen Ordner mit folderdem folgenden Pfad:

my_path = /a/b/c/d/e/folder

und eine Datei, die filein diesem Ordner aufgerufen wird .

Angenommen, ich führe diesen Befehl aus, um Gruppenberechtigungen unter / a / zu entfernen

> chmod g-rwx -R /a/

Angenommen, ich erteile +rxBerechtigungen für folder:

> chmod g+rx /a/b/c/d/e/folder

Wenn dann ein zweiter Benutzer in meiner Gruppe ausgeführt wird:

> ls /a/b/c/d/e/folder

oder

> cat /a/b/c/d/e/folder/file 

Sie erhält Berechtigungsfehler, und soweit ich das verstehe, muss ich g+xallen Eltern von Zugriff gewähren folder. Meine Frage ist dann, wann oder warum es jemals nützlich sein sollte +x, einem Verzeichnis, dessen Eltern es nicht haben , die Erlaubnis zu erteilen .

Vielen Dank


1
Bist du sicher, dass du rennst chmod +grx -R /a/b/c/d/e/folder? Es ist falsch, der richtige Weg, es auszuführen, ist:chmod g+rx -R /a/b/c/d/e/folder
Nozimica

3
Beantwortet diese Frage nicht direkt, empfiehlt jedoch das Lesen im Hintergrund: Erklärung der Verzeichnisberechtigungen
Gilles 'SO - hör auf böse zu sein'

Antworten:


6

Wenn Sie den Zugriff und die Verwendung eines gesamten Verzeichnisses (einschließlich seines Unterverzeichnisses) blockieren möchten, können Sie dies meistens durch Entfernen (nicht rekursiv) tun -x. Daher haben Sie möglicherweise Unterverzeichnisse verlassen +x, ohne Schaden zuzufügen.

Das Beibehalten der Berechtigungen für die Unterverzeichnisse kann aus mehreren Gründen nützlich sein (insbesondere, wenn -xdies nicht für alle gilt, aber mindestens ein Benutzer noch etwas tun kann).

Sie können beispielsweise die Verwendung des Containerverzeichnisses vorübergehend blockieren, während Sie andere Änderungen an den Berechtigungen innerhalb dieser Verzeichnisstruktur vornehmen, und dann den Zugriff auf den gesamten Baum in einem Vorgang wieder aktivieren ( +xdem Verzeichnis der obersten Ebene).

Es kann auch vorkommen, dass ein Skript (das nicht unbedingt vom Eigentümer ausgeführt wird) den Verzeichnisbaum an einem temporären Speicherort sichert (der von anderen nicht gelesen werden sollte) und alles in eine TAR-Datei einfügt, wobei die Berechtigungseinstellungen des Inhalt des Verzeichnisses.


7

Sie benötigen + x Berechtigungen für alle übergeordneten Verzeichnisse, um eine CD zu erstellen oder auf eine Datei in einem Verzeichnis zuzugreifen.

Sie benötigen + r Berechtigungen in Verzeichnissen, um Dateien aufzulisten. Hier ist ein Beispiel:

Sie können die folgenden Befehle ausführen, um einige Einstellungen vorzunehmen:

mkdir -p /a/b

touch /a/b/{file1,file2}

cd /a

echo 1 > b/file1

echo 2 > b/file2

Ohne Rechte:

pwd
/a$ pwd
/a
/a$ chmod -rwx b
/a$ ls -l
d---------  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
ls: : Permission denied
/a$ cat b/file1
cat: b/file1: Permission denied

Nur mit ausführen

/a$ chmod +x b
/a$ ls -l
total 0
d--x--x--x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: b: Permission denied
/a$ cat b/file1
a
/a$ ls -l b/file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 b/file1

Jetzt mit lesen:

/a$ chmod +r b/
/a$ ls -l
/a$ ls -l
total 0
dr-xr-xr-x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
total 16
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file2

Dieser Teil mag etwas verwirrend sein, aber wenn Sie nur lesen und nicht ausführen, können Sie die Dateien tatsächlich im Verzeichnis auflisten, aber nicht die Inodes-Metadaten lesen, sodass Ihnen die Berechtigung verweigert wird, Sie jedoch weiterhin die Liste der Dateien sehen können in einem Verzeichnis wie unten ..

/a$ chmod -x b/
/a$ ls -l
total 0
dr--r--r--  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: file1: Permission denied
ls: file2: Permission denied

2
Danke @skrewler. Sie sagten: "Sie benötigen + x Berechtigungen für alle übergeordneten Verzeichnisse, um eine CD zu erstellen oder auf eine Datei in einem Verzeichnis zuzugreifen", dachte ich. Meine Frage ist dann: warum würden Sie jemals geben + x Erlaubnis in ein Verzeichnis , dessen Eltern noch nicht haben + x Erlaubnis?
Amelio Vazquez-Reina

Das einzige, woran ich denken kann, ist, wenn Sie direkt dort einen Bind-Mount erstellen möchten, indem Sie die übergeordneten Verzeichnisse ohne die Ausführungsberechtigungen umgehen. Wenn das keinen Sinn ergibt, zeige ich ein Beispiel.
Skrewler

Das Obige hätte klarer sein sollen. Ein Root-Benutzer mit den Berechtigungen für alle übergeordneten Verzeichnisse kann diese Bindung bereitstellen, damit andere Benutzer das Verzeichnis erreichen können. Da sie / a / b / c / d / e erreichen konnten, wo nur d oder e global ausgeführt wurde, konnten Sie einen Bindungs-Mount von / mnt / d -> / a / b / c / d / e erstellen und ein Benutzer konnte erreichen es, indem man zum Einhängepunkt geht. Es ist die gleiche Idee wie eine feste Verknüpfung zu einer Stelle tief in einem Verzeichnisbaum herzustellen, die sonst nicht erreichbar wäre. Symbolische Links funktionieren jedoch nicht so, es wird ein Bind-Mount benötigt.
Skrewler

2

Sie möchten nicht rekursive +xBerechtigungen in der von Ihnen angegebenen Situation verwenden:

chmod g+x /a /a/b /a/b/c /a/b/c/d /a/b/c/d/e

(Dies setzt voraus, dass der Benutzer Mitglied der Gruppe jedes Verzeichnisses ist. Wenn nicht, müssten Sie dies chmod o+xfür solche Verzeichnisse tun .)

Damit ein Benutzer ls /a/b/c/d/e/foldererfolgreich arbeiten kann, muss er über Ausführungsberechtigungen für jedes Verzeichnis im Pfad verfügen und über Leseberechtigungen verfügen folder.

Wenn du. .. getan hast

chmod g+x -R /a

Es würde funktionieren, aber Sie würden jeder Datei und jedem Verzeichnis unter / a die Gruppenausführungsberechtigung erteilen . Das ist unnötig und bei Dateien wahrscheinlich falsch.


1

In der jeweiligen Situation besteht das Problem darin, dass selbst wenn folderein Benutzer aus Ihrer eigenen Gruppe über die entsprechenden Berechtigungen für den Zugriff verfügt, einer dieser übergeordneten Ordner von folderdiesem Benutzer nicht zugänglich ist Greifen Sie auf das Innere zu (das, was folderin Ihrem Beispiel genannt wird).

Wenn Sie ausführen:

chmod g-rwx -R /a/

dann aund alle seine Kinder werden diese Erlaubnis haben.

Wenn Sie ausführen:

chmod g+rx -R /a/b/c/d/e/folder

dann folderund alle seine Kinder werden auch diese Erlaubnis haben. Aber mit diesem späteren Befehl, die Ordner a/, a/bund so weiter , bis a/b/c/d/enicht ihre Berechtigungen ändern.


0

Der übliche Fall für das Entfernen des x-Bits in Verzeichnissen besteht darin, Benutzer in ihren Basisverzeichnissen zu sperren. Eingeschränkte Shells haben die Option, das cdVerweisen auf absolute Pfadnamen und das Ausführen von Programmen mit absoluten Pfaden nicht zuzulassen. Sie können auch nicht cd ..in das übergeordnete Verzeichnis ihres Home-Verzeichnisses wechseln und sind daher effektiv gesperrt und können keine Programme ausführen, die sich nicht in $ PATH befinden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.