
Ich versuche, die Berechtigung aller Dateien und Verzeichnisse in meinem Projekt rekursiv zu ändern.
Ich habe einen ... gefundenBeitrag im Magento-Forumsagen, dass ich diese Befehle verwenden kann:
find ./ -type f | xargs chmod 644
find ./ -type d | xargs chmod 755
chmod -Rf 777 var
chmod -Rf 777 media
Es hat funktioniert für find ./ -type d | xargs chmod 755
.
Der Befehl find ./ -type f
hat viele Dateien zurückgegeben, aber ich komme chmod: access to 'fileXY.html' not possible: file or directory not found
an alle Dateien, wenn ich ihn ausführe find ./ -type f | xargs chmod 644
.
Wie kann ich das lösen?
PS: Ich weiß, dass er empfohlen hat, für meine Var- und Medienordner die Berechtigung 777 zu verwenden, was ein Sicherheitsrisiko darstellt, aber was sollten wir sonst verwenden?
Antwort1
Ich vermute, Sie stoßen auf Dateien, deren Namen Zeichen enthalten, die xargs
zu einer Aufteilung führen.z.BLeerzeichen. Um dies zu beheben, sollten Sie, vorausgesetzt, Sie verwenden eine Version von find
und xargs
, die die entsprechenden Optionen unterstützt (die aus den GNU-Varianten stammen und nicht von POSIX angegeben werden), stattdessen die folgenden Befehle verwenden:
find . -type f -print0 | xargs -0 chmod 644
find . -type d -print0 | xargs -0 chmod 755
oder noch besser,
chmod -R a-x,a=rX,u+w .
Dies hat den Vorteil, dass es kürzer ist, nur einen Prozess verwendet und unterstützt wird durchPOSIXchmod
(sehendiese Antwortfür Details).
Ihre Frage zu media
und var
ist recht allgemein gehalten. Wenn Sie an spezifischen Antworten interessiert sind, schlage ich vor, dass Sie sie als separate Frage mit weiteren Informationen zu Ihrer Verwendung der Verzeichnisse stellen.
Antwort2
Wie wäre es mit:
find ./ -type d -exec chmod 755 {} +
Dies ist die kanonische portable Lösung, die sogar mit Zeilenumbrüchen in Dateinamen zurechtkommt.