Rekursiv Dateiberechtigungen ändern

19. September 2021 · Betriebssysteme · andreas · 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.