Berechtigungen nach chmod 777 auf unbekannt gesetzt

Berechtigungen nach chmod 777 auf unbekannt gesetzt

Ich habe gerade bemerkt, dass nach dem Laufen

chmod 777 * 

auf ein Verzeichnis mit Unterverzeichnissen, das Sie erwarten würden. Es setzt die Berechtigungen für alles, einschließlich der Unterverzeichnisse, auf 777. Wenn Sie jedoch entscheiden, dass Sie das nicht tun möchten, und ausführen

chmod 644 *

Jetzt werden dem Inhalt der Unterverzeichnisse unbekannte Berechtigungen zugewiesen, die nicht mehr rückgängig gemacht werden können.

Warum passiert das? Ist das das erwartete Verhalten oder ein Fehler? Gibt es eine Möglichkeit, die Dateiberechtigungen wiederherzustellen?

Da sich die Dateien, die ich hatte, in einer ZIP-Datei an einem anderen Speicherort befanden, habe ich einfach das gesamte Verzeichnis gelöscht und die ZIP-Datei erneut entpackt, aber ich würde gerne die Ursachen für dieses „Problem“ und seine Lösung kennen.

Einige zusätzliche Informationen: Ich führe diesen Befehl auf einem Remotecomputer über SSH aus.

Antwort1

Für solche Dinge verwenden Sie am besten „find“.

Für Verzeichnisse ist der X-Zugriff erforderlich, für Dateien nicht, daher unterschiedliche Berechtigungssätze.

# Files
find . -type f -exec chmod 644 '{}' \;

# Directories
find . -type d -exec chmod 755 '{}' \;

Antwort2

Die Art und Weise, wie die Berechtigungsbits interpretiert werden, ist für Dateien und Verzeichnisse unterschiedlich. Lesen Sie info coreutils 'File permissions'und man 2 chmodfür weitere Einzelheiten. Warum sollte man alles für Besitzer, Gruppe und Welt lesbar, beschreibbar und ausführbar machen wollen?

Da die Beweise verschwunden sind, kann ich nur vermuten, dass chmodSie nach Ihrem den Schreibzugriff auf .das aktuelle Verzeichnis verloren haben. Dies kann wie folgt behoben werden:

chmod u+w $PWD

Anschließend können Sie den Modus (die Berechtigungen) von Dateien ändern in$PWD

Indem Sie dies getan haben chmod 644 *, haben Sie auch dieausführenBerechtigung von allen Dateien, die diese Berechtigung hatten, sodass sie von keinem Besitzer, keiner Gruppe und keiner Welt mehr ausführbar sind.

Antwort3

Wenn Sie Berechtigungen für Verzeichnisse und Unterverzeichnisse festlegen möchten, sollten Sie Folgendes verwenden:

chmod -R

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

Antwort4

Ich habe die Lösung für mein Problem gefunden.

Zunächst einmal vielen Dank an alle, die gepostet haben. Ihre Antworten waren wirklich hilfreich.

Das Problem besteht darin, dass die Zuweisung der Berechtigung 664 an alle Dateien im aktuellen Verzeichnis Folgendes bewirkt:

chmod 644 *

entfernt die Ausführungsberechtigungen für Verzeichnisse, die Ausführungsberechtigungen benötigen, um ordnungsgemäß zu funktionieren. Die Lösung ist ganz einfach. Wir müssen nur die Berechtigungen für die Verzeichnisse wie folgt ändern:

chmod 744 dir_name

Dabei ist dir_name natürlich der Name unseres Verzeichnisses. Sobald wir das tun, ist alles wieder normal.

verwandte Informationen