Magento 2 Ordner / Dateiberechtigungen

61

Ich vermute, dass die Berechtigungen bei meiner Magento 2-Installation durcheinander geraten sind. Auf den alten Versionen würde ich den folgenden Befehl ausführen, um Ordner 755 und Dateien 644 zu erstellen:

find . -type f -exec chmod -c 644 {} \; && find . -type d -exec chmod -c 755 {} \;

Können Sie mir bitte mitteilen, welche Datei- und Ordnerberechtigungen für Magento 2 korrekt sind, da sie sich zu unterscheiden scheinen? Auch wenn es bestimmte Ordner oder Dateien gibt, für die andere Berechtigungen erforderlich wären.

Neekoy
quelle
Versuchen Sie 777 Permission, bevor Sie eine Sicherungskopie
erstellen
Der PHP-Handler meines Servers ist suPHP und ich möchte nicht wirklich alles mit 777 belegen, da dies meine Website praktisch für jedermann öffnen würde. Gibt es spezifischere Berechtigungen, die zugewiesen werden können?
Neekoy
Magento hat die Dateiberechtigung für Ordner auf 775 und für die Dateiberechtigung auf 644 festgelegt
Rishabh Rk Rai
Zu Ihrer Information, wenn sich magento 2 in einem "Home" -Verzeichnis befindet var/cacheund pub/staticsuid-Bits gesetzt werden müssen. Ich verwendete: find var/cache -type d -print0 | xargs -0 sudo chmod 1775
Chris K

Antworten:

117

Sie können auf http://devdocs.magento.com/ verweisen.

Die wichtigen Dinge:

Der Besitzer des Magento-Dateisystems: Muss die volle Kontrolle (Lesen / Schreiben / Ausführen) über alle Dateien und Verzeichnisse haben.

Darf nicht der Webserver-Benutzer sein. Es sollte ein anderer Benutzer sein.

Der Webserver-Benutzer muss Schreibzugriff auf die folgenden Dateien und Verzeichnisse haben: var app / etc pub (und wahrscheinlich neu in 2.2.1 :) generiert

Darüber hinaus muss die Gruppe des Webservers das Magento-Dateisystem besitzen, damit der Magento-Benutzer (der sich in der Gruppe befindet) den Zugriff auf Dateien für den Webserver-Benutzer freigeben kann. (Dies schließt Dateien ein, die mit Magento Admin oder anderen webbasierten Dienstprogrammen erstellt wurden.)

Wir empfehlen, die Berechtigungen wie folgt festzulegen:

All directories have 770 permissions.

770 permissions give full control (that is, read/write/execute) to the owner and to the group and no permissions to anyone else.

All files have 660 permissions.

660 permissions mean the owner and the group can read and write but other users have no permissions.

Sie sollten wie unten empfohlen einstellen.

cd <your Magento install dir> 

find . -type f -exec chmod 644 {} \;                        // 644 permission for files

find . -type d -exec chmod 755 {} \;                        // 755 permission for directory 

find ./var -type d -exec chmod 777 {} \;                // 777 permission for var folder    

find ./pub/media -type d -exec chmod 777 {} \;

find ./pub/static -type d -exec chmod 777 {} \;

chmod 777 ./app/etc

chmod 644 ./app/etc/*.xml

chown -R :<web server group> .

chmod u+x bin/magento

Ich hoffe, dies wird dir helfen.

leugnen vachhani
quelle
3
Das funktioniert nur bei mir mit \;zB:find ./var -type d -exec chmod 777 {} \;
bpoiss
1
Dies ist jedoch für den Entwicklungsmodus vorgesehen. Für die Produktion sollte es nur für Gruppen vorgesehen sein - keine Ahnung, wie das funktionieren soll
Alex
3
Ich denke, Sie müssen auch chmod u+x bin/magentoin der Lage sein, Konsolenbefehle auszuführen.
Volvox
42
Freunde lassen Freunde nicht 777
Darren Felton
6
app / etc 777> Haha schön. Hackbar einfach. app / etc enthält Ihre
CompactCode
19

In einigen seltenen Fällen können Sie 770 und 660 nicht verwenden, wie @MagenX sagt, 755 und 644 könnten auch die Erlaubnis sein, die Sie benötigen. (Einige Fast-CGI-Benutzer, denke ich)

In diesem Fall führen Sie Folgendes aus:

find . -type d -exec chmod 755 {} \; && find . -type f -exec chmod 644 {} \; && chmod u+x bin/magento

Das scheint das Problem zu beheben, aber wenn Magento neue Dateien oder Verzeichnisse generiert, haben diese wieder die Berechtigung 770 und 660. Sie können diese Standardwerte für chmod in den folgenden Dateien bearbeiten:

/vendor/magento/framework/Filesystem/DriverInterface.php 
(WRITEABLE_DIRECTORY_MODE and WRITEABLE_FILE_MODE)

/lib/internal/Cm/Cache/Backend/File.php 
(directory_mode and file_mode)

Führen Sie nach diesen Änderungen den ersten Befehl erneut aus. Danach sollten neu generierte Dateien kein Problem mehr darstellen.

Hinweis: Das Bearbeiten solcher Dateien ist nie eine gute Idee, aber ich vermute, dass diese chmod-Optionen in Zukunft konfigurierbar sein werden, also habe ich den einfachen Weg gewählt.

Daniel van der Garde
quelle
1
Kann /lib/internal/Cm/Cache/Backend/File.php auf M231 nicht finden
snh_nl
@snh_nl In der neueren Magento-Version setzen sie die Berechtigung nicht mehr, es sieht so aus, als ob sie 775 verwenden. Nach einer Neuinstallation können Sie einfach Folgendes ausführen: find. -type f -exec chmod 664 {} \; finden . -type d -exec chmod 775 {} \; find ./var -type d -exec chmod 777 {} \; find ./pub/media -type d -exec chmod 777 {} \; find ./pub/static -type d -exec chmod 777 {} \; chmod 777 ./app/etc chmod 644 ./app/etc/*.xml chmod u + x bin / magento In der Wurzel und es sollte dir gut gehen.
Daniel van der Garde
11

Sie können die in der Magento-Dokumentation empfohlene Methode verwenden :

find . -type f -exec chmod 664 {} \;
find . -type d -exec chmod 775 {} \;
find var pub/static pub/media app/etc -type f -exec chmod g+w {} \;
find var pub/static pub/media app/etc -type d -exec chmod g+ws {} \;
chmod u+x bin/magento
Rafael Corrêa Gomes
quelle
Wie kann ich dem generierten Ordner in Windows Schreibrechte geben? @Rafael Corrêa Gomes
zus
8
sudo find . -type d -exec chmod 770 {} \; && sudo find . -type f -exec chmod 660 {} \; && sudo chmod u+x bin/magento

Für lokale Entwicklung eingestellt pubund varauf 775 oder 777

Ethan L.
quelle
Warum? (Es gibt ein Minimum an Kommentarlänge)
vitoriodachef
7

Wenn Sie SELinux verwenden (zB CentOS), versuchen Sie:

sudo chcon -R -t httpd_sys_rw_content_t var

(natürlich aus dem magento root ordner)

HausO
quelle
6

In der Magento Community empfehlen

Wir empfehlen, die Berechtigungen wie folgt festzulegen:

Alle Verzeichnisse haben 770 Berechtigungen. Mit 770-Berechtigungen erhalten der Besitzer und die Gruppe die volle Kontrolle (dh Lesen / Schreiben / Ausführen), und es werden keine Berechtigungen für andere Personen erteilt.

Alle Dateien haben 660 Berechtigungen. 660 Berechtigungen bedeuten, dass der Eigentümer und die Gruppe lesen und schreiben können, andere Benutzer jedoch keine Berechtigungen haben.

Weitere Informationen finden Sie unter https://devdocs.magento.com/guides/v2.3/install-gde/prereq/file-system-perms.html

Magento 2
quelle
4

Legen Sie diesen Inhalt in Ihrem Stammordner ab und führen Sie ihn dann mit der Konsole aus.

Vergiss es nicht chmod +x yourfile.sh.

#!/bin/sh
chmod 2775 -R .

chmod 777 -R ./pub/

chmod 777 -R ./var/
Sheshgiri Anvekar
quelle
Wie kann ich diesen Code setzen? als htacces oder php datei
matinict
Vermeiden Sie dies, es macht Ihr Webserver-Verzeichnis für die Öffentlichkeit zugänglich. Lesen Sie stattdessen die von magento bereitgestellten devdocs, um die von Ihnen ausgeführte Version ordnungsgemäß zu sichern.
themanwhoknowstheman
4

Sie müssen nur sicherstellen, dass die Dateien dem Benutzer gehören, der PHP ausführt, oder bei cPanel - cpanel-Benutzer und derselben Gruppe

so ist dein befehl gut:

find . -type f -exec chmod -c 644 {} \; && find . -type d -exec chmod -c 755 {} \;

Aktualisiere einfach den Dateibesitzer:

chown -R user:user *

wo userist der besitzer, userder php betreibt

Anstatt die Berechtigungen jedes Mal zu ändern, müssen Sie sich als richtiger Benutzer, Dateieigentümer, von root zu user anmelden / arbeiten:

cd /magento/root/folder/
su $(stat -c '%U' index.php) -s /bin/bash
whoami
pwd
MagenX
quelle
Wie kann ich dem generierten Ordner in Windows Schreibrechte geben? @MagenX
zus
3
find . -type f -exec chmod 400 {} \;
find . -type d -exec chmod 500 {} \;
find var/ -type f -exec chmod 600 {} \;
find media/ -type f -exec chmod 600 {} \;
find var/ -type d -exec chmod 700 {} \;
find media/ -type d -exec chmod 700 {} \;
chmod 700 includes
chmod 600 includes/config.php

Detaillierte Informationen finden Sie auch unter http://devdocs.magento.com/guides/m1x/install/installer-privileges_after.html

Rushvi
quelle
5
Fragenanrufe
0

Ich habe auf diese Weise für CentOS Linux 7.4.1708 auf Plesk Onyx 17.8.11 gelöst

find . -type f -exec chmod 644 {} \; &&  find . -type d -exec chmod 755 {} \; && find ./var -type d -exec chmod 777 {} \; && find ./pub/media -type d -exec chmod 777 {} \; && find ./pub/static -type d -exec chmod 777 {} \; && chmod 777 ./app/etc  && chmod 644 ./app/etc/*.xml

chown -R :<web server group> .
Altravista
quelle
Sie sollten es vermeiden, 777 für Dateien und Verzeichnisse zu verwenden. Es öffnet Ihren Shop für unnötige Sicherheitsrisiken. Lesen Sie stattdessen die von magento bereitgestellten Dokumente für die von Ihnen ausgeführte Version.
themanwhoknowstheman
0

Führen Sie diese Befehle als Root aus. Wenn Sie bereits 777 die Erlaubnis erteilt haben, setzen Sie sie mit den ersten beiden Befehlen zurück, ansonsten fahren Sie mit dem Rest fort.

find . -type f -exec chmod 664 {} \;

find . -type d -exec chmod 775 {} \;

find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +

find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +

Setzen Sie den Besitz auf Magento-Benutzer und Webbenutzer mit

sudo chown -R <Magento user>:<web server group> .

Durch Ausführen dieser Befehle wird die Berechtigung für Ordner und Dateien im Magento-Stammverzeichnis sowie für die Erstellung der neuen Dateien in den Verzeichnissen var, pub und generated festgelegt.

Führen Sie keinen Befehl als Root-Benutzer aus, da dies dazu führen kann, dass die neuen statischen Dateien mit Root-Eigentümern erstellt werden. Dies kann dazu führen, dass der Webbenutzer nicht auf solche Dateien zugreifen kann und Sie zur Erteilung von 777-Berechtigungen gezwungen werden Bitte setzen Sie es zurück. Führen Sie Magento-Befehle als Magento-Benutzer aus .

Raj Mohan R
quelle