Frage chmod -R macht Dateien in untergeordneten Ordnern aus irgendeinem Grund unlesbar


Ich habe die Berechtigungen beim Einrichten einiger WordPress-Themes angepasst und ausgeführt chmod 664 -R theme-dir/* Es funktionierte gut für die Dateien im Stammverzeichnis des Verzeichnisses, aber alle Dateien in Unterverzeichnissen lesen sich jetzt so, 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 nicht zu einem der Unterverzeichnisse wechseln, und ich kann sie auch nicht löschen. Ich habe noch nie so etwas gesehen, irgendjemandem ist jemals etwas Ähnliches begegnet?


22
2017-09-29 14:25


Ursprung


sieht wie beschädigtes Dateisystem aus .. - alexus
Lauf chmod -R u+rwX,go+rX,go-w theme-dir/* - Dusan Bajic
@ dusan.bajic Das hat funktioniert, danke. Dennoch keine Ahnung, warum es in erster Linie passiert ist. - Sal
@alexus keine Korruption, nur Dauerwellen - chicks
Ich glaube, ich habe sowas schon gesehen, als ich chown 644 (oder was auch immer) gegen chmod gemacht habe, aber ich habe wirklich keine Lust auf ein funktionierendes System - Foon


Antworten:


Der Zugriff auf den Inhalt (oder genauer gesagt die Dateimetadaten außer dem Dateinamen) eines Verzeichnisses erfordert, dass das Verzeichnis das Ausführungsbit gesetzt hat.

Ihr rekursives chmod hat diese Berechtigung entfernt, sodass Sie diesen Zugriff verloren haben. Wenn Sie das verwenden -R Option von chmod Vermeiden Sie die Verwendung der numerischen Version der Berechtigungen und führen Sie sie stattdessen aus (indem Sie den gewünschten Status als Beispiel verwenden) chmod -R ug=rwX,o=rX. Das X bedeutet dort, dass das X-Bit nur für Verzeichnisse oder Dateien gesetzt wird, die mindestens eine haben x einstellen. Vielleicht möchten Sie auch 644 (u=rwX,go=rX) es sei denn, Sie brauchen Gruppenbenutzer wirklich zum Schreiben.


49
2017-09-29 14:40



X bedeutet X in Verzeichnissen setzen und Dateien, die bereits Ausführungsrechte für einige Benutzer haben (was ist normalerweise was du willst) - tomclegg
@tomclegg: Richtig. Ich habe meine Antwort entsprechend aktualisiert. Es scheint seltsam, dass sie nie eine echte verzeichnisspezifische Version oder noch besser einen Vorbereitungsbuchstaben (wie u, g, o oder a) hinzugefügt haben, was bedeutet, dass diese Änderung nur auf Verzeichnisse angewendet wird. - Kevin Cathcart


Von dem Wordpress-Dokumentation:

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

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 {} \;

13
2017-09-29 14:39



Ein Overkill für dieses spezielle Problem, aber in anderen Fällen sehr nützlich :) - nurchi
Ich habe in mehr sicherheitssensiblen Umgebungen (Magento und Health Care Systems vor kurzem) festgestellt, dass Anbieter und Open-Source-Systeme NIEMALS die Dateimethode empfehlen, da sie kitegranulare Kontrolle über die oben genannten Bedingungen bietet und auch feinkörnige Kontrolle ermöglicht Anwendung von Setuid, Setgid und auch das berüchtigte "Sticky Bit". Es ist wahrscheinlich mehr Arbeit, dies für diesen Anwendungsfall zu kartieren, aber die Wettantwort ist immer die sicherste Methode, die das gewünschte Ergebnis erzielt. Ich glaube, Sicherheit sollte immer Feature Nr. 1 sein, wenn es möglich ist, es sich zu leisten. - Bryan 'BJ' Hoffpauir Jr.