Ich habe die Berechtigungen einiger Dateien, die ich auf ein Unix-System migriert hatte, massiv rekursiv geändert. Ich habe sie in ug + rw geändert, aber dann habe ich festgestellt, dass ich keine Unterverzeichnisse durchlaufen kann. Ich habe in der Manpage nach gesucht chmod
und keine Erklärung für das Ausschließen von Verzeichnissen gefunden. Daher habe ich ein wenig gegoogelt und festgestellt, dass find
Benutzer die Berechtigungen für Verzeichnisse so geändert haben, dass sie für Benutzer und Gruppen "ausgeführt" wurden. Ich habe das getan und dann konnte ich sie untersuchen.
Aber es schien mir, dass ich in der Lage sein sollte, diese Suche chmod
durchzuführen - die Dateien rekursiv in Lesen / Schreiben zu ändern, aber die Verzeichnisse nicht unübersetzbar zu machen. Habe ich das richtig gemacht oder gibt es einen einfacheren Weg, es zu tun?
quelle
find
zu 700.em alle Dateiberechtigungen auf 600 und alle Verzeichnisberechtigungen setzen (ich kam hier durch meine googlings zu diesem Thema.) Wenn das kann mit einem einzigen erfolgenchmod -R
Befehl, fühlen Sie sich frei , mich zu korrigieren.chmod -R u=rwX,go= /path
macht fast das, was Sie wollen: Er setzt alle Verzeichnisse auf 700 und alle Dateien auf 600 oder 700, je nachdem, ob das Ausführungsbit bereits gesetzt ist oder nicht, und ich denke, das ist das Richtige .find
Ihnen geschriebene Befehl war also als Vorlage sehr hilfreich. :)Find ist der 'richtige' Weg und der einzige programmatische Weg, obwohl es Variationen gibt:
oder
oder der langsamste:
Jede dieser Optionen wählt eine Datei aus (kein Verzeichnis, kein Symlink) und wendet den
chmod
Befehl darauf an. Die ersten beiden verringern die Anzahl der Aufrufe,chmod
indem die Datei jedes Mal an das Ende einer internen Befehlszeile angehängt wird, bis ein Maximum (häufig 10) erreicht ist. Anschließend wird der Befehl aufgerufen und die Neuerstellung eines neuen Befehls gestartet. Die letzte Anweisung erzeugt für jede Datei einen neuen Prozess, der weniger effizient ist.quelle