Autorisations de dossier / fichier Magento 2

61

Je soupçonne que les autorisations ont peut-être été gâchées sur mon installation de Magento 2. Sur les anciennes versions, j'exécutais la commande suivante pour créer les dossiers 755 et les fichiers 644:

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

Pouvez-vous s'il vous plaît me faire savoir quelles sont les autorisations de fichier et de dossier correctes pour Magento 2, car elles semblent être différentes? De même, si certains dossiers ou fichiers particuliers nécessitent des autorisations différentes.

Neekoy
la source
Essayez 777 Permission avant de prendre une sauvegarde
Magento 2
Le gestionnaire PHP de mon serveur est suPHP et je ne souhaite pas vraiment attribuer 777 à tout, car cela ouvrirait pratiquement mon site Web à quiconque. Existe-t-il des autorisations plus spécifiques pouvant être attribuées?
Neekoy
Magento a l'autorisation de fichier sur les dossiers jusqu'à 775 et pour l'autorisation de fichiers définie sur 644
Rishabh Rk Rai
Pour votre information, si magento 2 est dans un répertoire "home", var/cacheil pub/staticfaut définir les bits suid. J'ai utilisé: find var/cache -type d -print0 | xargs -0 sudo chmod 1775
Chris K

Réponses:

118

vous pouvez vous référer à http://devdocs.magento.com/

Les choses importantes:

Le propriétaire du système de fichiers Magento: Doit avoir le contrôle total (lecture / écriture / exécution) de tous les fichiers et répertoires.

Ne doit pas être l'utilisateur du serveur Web; ce devrait être un utilisateur différent.

L’utilisateur du serveur Web doit avoir un accès en écriture aux fichiers et répertoires suivants: var app / etc pub (et probablement nouveau dans la version 2.2.1 :) généré

De plus, le groupe du serveur Web doit posséder le système de fichiers Magento pour que l'utilisateur Magento (membre du groupe) puisse partager l'accès aux fichiers avec l'utilisateur du serveur Web. (Cela inclut les fichiers créés par l’administrateur Magento ou d’autres utilitaires basés sur le Web.)

Nous vous recommandons de définir les autorisations comme suit:

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.

Vous devriez définir comme ci-dessous recommandé.

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

J'espère que cela t'aidera.

dénoncer vachhani
la source
3
Cela ne fonctionne que pour moi avec \;, par exemple:find ./var -type d -exec chmod 777 {} \;
bpoiss
1
Mais c'est pour le mode de développement. Pour la production, le groupe devrait être en lecture seule - aucune idée de la façon dont cela fonctionnerait
Alex
3
Je pense que vous devez également chmod u+x bin/magentopouvoir exécuter des commandes de la console.
Volvox
43
les amis ne laissent pas les amis 777
Darren Felton le
6
app / etc 777> Haha sympa. Hackable facile. app / etc contient les informations de votre base de données
CompactCode
19

Dans de rares cas, vous ne pouvez pas utiliser 770 et 660, comme @MagenX le dit, 755 et 644 pourraient également être l'autorisation dont vous avez besoin. (Certains utilisateurs de Fast-CGI, je suppose)

Donc dans ce cas, vous lancez:

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

Cela semble résoudre le problème, mais si Magento génère de nouveaux fichiers ou répertoires, ceux-ci auront à nouveau l'autorisation 770 et 660. Vous pouvez éditer ces valeurs chmod par défaut dans les fichiers suivants:

/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)

Après ces modifications, exécutez à nouveau la première commande et ensuite, les fichiers nouvellement générés ne devraient plus être un problème.

Remarque: Éditer des fichiers comme celui-ci n'est jamais une bonne idée, mais je soupçonne que ces options de chmod seront configurables à l'avenir, j'ai donc choisi la méthode la plus simple.

Daniel van der Garde
la source
1
Impossible de trouver /lib/internal/Cm/Cache/Backend/File.php sur M231
snh_nl
@snh_nl Dans les versions plus récentes de Magento, ils ne définissent plus l'autorisation, ils semblent utiliser 775. Après une nouvelle installation, vous pouvez simplement exécuter: find. -type f -exec chmod 664 {} \; trouver . -type d -exec chmod 775 {} \; trouver ./var -type d -exec chmod 777 {} \; trouver ./pub/media -type d -exec chmod 777 {} \; trouver ./pub/static -type d -exec chmod 777 {} \; chmod 777 ./app/etc chmod 644 ./app/etc/*.xml chmod u + x bin / magento À la racine et tout devrait bien se passer.
Daniel van der Garde
11

Vous pouvez utiliser la méthode recommandée par la documentation de Magento :

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
la source
Comment donner une permission d'écriture au dossier généré dans Windows? @Rafael Corrêa Gomes
zu
8
sudo find . -type d -exec chmod 770 {} \; && sudo find . -type f -exec chmod 660 {} \; && sudo chmod u+x bin/magento

Pour ensemble de développement local pubet varà 775 ou 777

Ethan L.
la source
Pourquoi? (Il y a une longueur minimum de commentaire)
vendredi
7

Si vous utilisez SELinux ® (par exemple, CentOS), essayez:

sudo chcon -R -t httpd_sys_rw_content_t var

(depuis le dossier racine de magento bien sûr)

HausO
la source
6

Dans la communauté Magento recommander

Nous vous recommandons de définir les autorisations comme suit:

Tous les répertoires ont des autorisations 770 . Les autorisations 770 accordent un contrôle total (c'est-à-dire lecture / écriture / exécution) au propriétaire et au groupe, sans autorisation à quiconque.

Tous les fichiers ont 660 autorisations. 660 autorisations signifient que le propriétaire et le groupe peuvent lire et écrire, mais les autres utilisateurs ne disposent d'aucune autorisation.

Pour plus de réf, ce lien https://devdocs.magento.com/guides/v2.3/install-gde/prereq/file-system-perms.html

Magento 2
la source
4

Placez ce contenu dans votre dossier racine, puis exécutez-le avec la console.

N'oubliez pas de chmod +x yourfile.sh.

#!/bin/sh
chmod 2775 -R .

chmod 777 -R ./pub/

chmod 777 -R ./var/
Sheshgiri Anvekar
la source
Comment puis-je mettre ce code? sous forme de fichier htacces ou php
matinict du
Evitez cela, c'est simplement que votre répertoire de serveur Web est ouvert au public. Lisez plutôt les devdocs fournis par magento pour sécuriser correctement la version que vous utilisez.
themanwhoknowstheman
4

sans autorisations spéciales, vous devez simplement vous assurer que les fichiers appartenant à l'utilisateur qui exécute php ou, dans le cas de cPanel - utilisateur cpanel, et au même groupe

alors votre commande est bonne:

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

il suffit de mettre à jour le propriétaire des fichiers:

chown -R user:user *

userest le propriétaire, userqui exécute php.

au lieu de changer les autorisations à chaque fois, connectez-vous / travaillez en tant qu'utilisateur approprié, propriétaire des fichiers, de la racine à l'utilisateur:

cd /magento/root/folder/
su $(stat -c '%U' index.php) -s /bin/bash
whoami
pwd
MagenX
la source
Comment donner une permission d'écriture au dossier généré dans Windows? @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

Des informations détaillées sont également disponibles à l’ adresse suivante : http://devdocs.magento.com/guides/m1x/install/privileges_after.html.

Rushvi
la source
5
Question demande conseil sur Magento 2
Flipmedia
0

J'ai résolu de cette façon pour CentOS Linux 7.4.1708 sur Plesk Onyx 17.8.11

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
la source
Vous devriez éviter d'utiliser 777 sur les fichiers et les répertoires. Cela expose votre boutique à des risques de sécurité inutiles. Lisez plutôt la documentation fournie par magento pour la version que vous utilisez.
themanwhoknowstheman
0

Exécutez ces commandes en tant qu'utilisateur root. Si vous avez déjà donné l'autorisation 777, rétablissez-la à l'aide des deux premières commandes, sinon passez au reste.

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 {} +

Définissez la propriété sur utilisateur Magento et utilisateur Web à l'aide de

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

L'exécution de ces commandes définit l'autorisation pour les dossiers et les fichiers de la racine Magento et pour les nouveaux fichiers à créer dans les répertoires var, pub et générés.

N'exécutez aucune commande en tant qu'utilisateur root car cela pourrait entraîner la création de nouveaux fichiers statiques avec la propriété root, ce qui pourrait empêcher l'utilisateur web d'accéder à ces fichiers, ce qui vous obligerait à fournir l'autorisation 777.S'il vous plaît, n'autorisez jamais l'autorisation 777 si donc s'il vous plaît reconvertir ce back.So exécuter des commandes Magento que l' utilisateur Magento .

Raj Mohan R
la source