chmod -R macht Dateien in untergeordneten Ordnern aus irgendeinem Grund ureadable

22

Ich habe die Berechtigungen beim Einrichten einiger WordPress-Themes angepasst und ausgeführt. chmod 664 -R theme-dir/*Es hat bei den Dateien im Stammverzeichnis des Verzeichnisses einwandfrei funktioniert, aber alle Dateien in den Unterverzeichnissen lesen sich jetzt wie folgt aus, wenn ich ls -l:

?---------  ? ? ? ?            ? core_functions.php
?---------  ? ? ? ?            ? css
?---------  ? ? ? ?            ? custom_functions.php
?---------  ? ? ? ?            ? images
?---------  ? ? ? ?            ? import_settings.php
?---------  ? ? ? ?            ? js
?---------  ? ? ? ?            ? options_trim.php
?---------  ? ? ? ?            ? page_templates
?---------  ? ? ? ?            ? post_thumbnails_trim.php
?---------+ ? ? ? ?            ? shortcodes

Ich kann keine CD in eines der Unterverzeichnisse kopieren und sie auch nicht löschen. Ich habe so etwas noch nie gesehen, ist irgendjemand jemals auf etwas Ähnliches gestoßen?

Sal
quelle
sieht aus wie beschädigtes Dateisystem ..
Alexus
1
runchmod -R u+rwX,go+rX,go-w theme-dir/*
Dusan Bajic
@ dusan.bajic Das hat funktioniert, danke. Immer noch keine Ahnung, warum es überhaupt passiert ist.
Sal
5
@alexus keine Korruption, nur Dauerwellen
Küken
Ich glaube, ich habe so etwas gesehen, als ich 644 (oder was auch immer) gegen chmod abgespielt habe, aber ich habe wirklich keine Lust, es erneut auf einem funktionierenden System zu testen
Foon,

Antworten:

49

Für den Zugriff auf den Inhalt (oder genauer gesagt auf Dateimetadaten mit Ausnahme des Dateinamens) eines Verzeichnisses muss das Ausführungsbit für das Verzeichnis festgelegt sein.

Ihr rekursiver chmod hat diese Berechtigung entfernt, sodass Sie diesen Zugriff verloren haben. Wenn Sie die -ROption von verwenden, chmodist es besser, die Verwendung der numerischen Version der Berechtigungen zu vermeiden und stattdessen auszuführen (am Beispiel Ihres gewünschten Status) chmod -R ug=rwX,o=rX. Das große X bedeutet, dass das X-Bit nur für Verzeichnisse oder Dateien gesetzt wird, für die mindestens ein Bit xgesetzt ist. Möglicherweise möchten Sie auch 644 ( u=rwX,go=rX) verwenden, es sei denn, Sie benötigen wirklich Gruppenbenutzer zum Schreiben.

Kevin Cathcart
quelle
6
X bedeutet, X für Verzeichnisse und Dateien
festzulegen
1
@tomclegg: Richtig. Ich habe meine Antwort entsprechend aktualisiert. Es scheint seltsam, dass sie niemals eine echte verzeichnisspezifische Version oder besser gesagt einen Vorbereitungsbuchstaben (wie das u, g, o oder a) hinzugefügt haben, was bedeutet, dass diese Änderung nur auf Verzeichnisse angewendet wird.
Kevin Cathcart
13

Aus der Wordpress-Dokumentation :

Wenn Sie Shell-Zugriff auf Ihren Server haben, können Sie Dateiberechtigungen mithilfe der folgenden Befehle rekursiv ändern:

Für Verzeichnisse:

find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;

Für Dateien:

find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;
Bentek
quelle
Ein Overkill für dieses spezielle Problem, aber in anderen Fällen sehr nützlich :)
Nurchi
1
In sicherheitsrelevanteren Umgebungen (Magento und Health Care Systems in letzter Zeit) ist mir aufgefallen, dass Anbieter und Open Source-Systeme NUR die Verwendung der Dateimethode empfehlen, da Sie die oben genannten Bedingungen mit dem Kite granular steuern können und auch eine fein abgestimmte Kontrolle über anwendung von setuid, setgid und dem berüchtigten "sticky bit". Es ist wahrscheinlich aufwändiger, dies für diesen Anwendungsfall abzubilden, aber die Antwort auf die Wette ist immer die sicherste Methode, mit der das gewünschte Ergebnis erzielt wird. Ich glaube, Sicherheit sollte immer die Nummer 1 sein, wenn es möglich ist, sie sich zu leisten.
Bryan 'BJ' Hoffpauir Jr.