Ich habe versucht, Ausführungsberechtigungen für sh-Dateien in einem Ordner hinzuzufügen. Dafür habe ich fälschlicherweise Folgendes verwendet:
find . -print0 -iname '*.sh' | xargs -0 chmod -v 744
und die Ausgabe war:
mode of `.' changed from 0755 (rwxr-xr-x) to 0744 (rwxr--r--)
mode of `./codis.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./ne fil.sw' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./.whois1.sh.swo' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./new file' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./ezik.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./.whois1.sh.swp' changed from 0600 (rw-------) to 0744 (rwxr--r--)
mode of `./whois1.sh' retained as 0744 (rwxr--r--)
Ich weiß jetzt, dass der Find-Teil korrekt verwendet wird.
find . -iname '*.sh' -print0
Also habe ich einen weiteren Fund wie folgt erstellt:
find . \! -iname '*.sh' -print0 | xargs -0 chmod 600
damit ich die Berechtigungen für Nicht-SH-Dateien zurücksetzen kann (ja, ich sehe, dass einige Dateien 644 Berechtigungen haben, nicht 600, aber das spielt jetzt keine Rolle). Die Ausgabe für diesen Befehl lautet:
chmod: cannot access `./ne fil.sw': Permission denied
chmod: cannot access `./.whois1.sh.swo': Permission denied
chmod: cannot access `./new file': Permission denied
chmod: cannot access `./.whois1.sh.swp': Permission denied
Ich habe es sudo
auch verwendet, aber trotzdem nichts ...
Ich sehe, ich verstehe die Berechtigungen nicht richtig ... Wenn ich das richtig verstehe, brauche ich auch x
Berechtigungen für das Verzeichnis, direc
um Befehle in diesem Verzeichnis auszuführen.
Antwort1
Ihr find
cmd findet auch das aktuelle Verzeichnis " .
". Die Rechte dieses Verzeichnisses werden dann auf gesetzt 600
und Sie verlieren daher die Rechte, die Dateien in diesem Verzeichnis zu berühren.
Führen Sie also das Zurücksetzen cd ..
des chmod 700
Verzeichnisses aus find
, wobei das aktuelle Verzeichnis nun wie folgt ausgeschlossen wird:
find . \! -path . \! -iname '*.sh' -print0 | xargs -0 chmod 600