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 chmod
fü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 chmod
Sie 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.