Rekursiv Dateiberechtigungen ändern

· · 2 Kommentare

Um die Berechtigungen von Dateien zu ändern, wird der Befehl "chmod" verwendet, welcher auch einen Schalter zur rekursiven Änderung hat:

       -R, --recursive
              Dateien und Verzeichnisse rekursiv ändern

Spannend wird es, wenn es um das rekursive Entziehen der "Ausführen"-Berechtigung geht, denn diese müssen Verzeichnisse behalten, damit man weiterhin in sie wechseln kann.

Als Krücke in der Not entpuppt sich der Befehl "find", welcher mit den richtigen Parametern gestartet eine Unterscheidung zwischen Dateien und Ordnern ermöglicht und somit auch das gezielte Ändern der Berechtigungen:

$ find . -type f -exec chmod -x {} \;

Die Parameter sind hierbei wie folgt:

       -type c
              Datei ist vom Typ c;:
...
              d      Verzeichnis
...
              f      reguläre Datei
...
       -exec Befehl ;
              führt  den Befehl aus; wahr, wenn Status 0 zurückgegeben wird. Alle folgenden Argu‐
              mente von find werden als Argumente des Befehls betrachtet, bis ein Argument gefun‐
              den wird, das »;« beinhaltet. Die Zeichenkette »{}« wird überall, wo sie in den Ar‐
              gumenten erscheint, durch den aktuell verarbeiteten Dateinamen ersetzt,  nicht  nur
              in  Argumenten,  in  denen  sie allein steht, wie in einigen Versionen von find. Es
              könnte nötig sein, beide Konstruktionen zu maskieren (mit einem »\«) oder in Anfüh‐
              rungszeichen  zu setzen, um sie vor einer Expansion durch die Shell zu schützen.

2 Kommentare

  1. chmod -R -x+X

    The letters rwxXst select file mode bits for the affected users: [...], execute/search only if the file is a directory or already has execute permission for some user (X), [...]

    • Danke für den Hinweis. Mit "-x" und "+X" hatte ich zwar herumexperimentiert, aber leider erfolglos.

Kommentar schreiben





Ihr Kommentar wird erst nach Freischaltung angezeigt.