Warum kann ich diese Dateien nicht mit chmod ändern, was früher möglich war?

Warum kann ich diese Dateien nicht mit chmod ändern, was früher möglich war?

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 sudoauch verwendet, aber trotzdem nichts ...

Ich sehe, ich verstehe die Berechtigungen nicht richtig ... Wenn ich das richtig verstehe, brauche ich auch xBerechtigungen für das Verzeichnis, direcum Befehle in diesem Verzeichnis auszuführen.

Antwort1

Ihr findcmd findet auch das aktuelle Verzeichnis " .". Die Rechte dieses Verzeichnisses werden dann auf gesetzt 600und Sie verlieren daher die Rechte, die Dateien in diesem Verzeichnis zu berühren.

Führen Sie also das Zurücksetzen cd ..des chmod 700Verzeichnisses aus find, wobei das aktuelle Verzeichnis nun wie folgt ausgeschlossen wird:

find . \! -path . \! -iname '*.sh' -print0 | xargs -0 chmod 600

verwandte Informationen