Дозволи на папки / файли Magento 2


61

Я підозрюю, що дозволи, можливо, зіпсувались на моїй установці Magento 2. У старих версіях я запустив би наступну команду для створення папок 755 та файлів 644:

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

Чи можете ви, будь ласка, повідомити мені, що правильні дозволи для файлів і папок для Magento 2, оскільки вони здаються різними? Крім того, якщо є якісь конкретні папки або файли, для яких потрібні різні дозволи.


Спробуйте 777 Дозвіл до цього, зробіть резервну копію
Magento 2

PHP-обробник мого сервера - це suPHP, і я дійсно не хочу призначати 777 всьому, оскільки це практично відкриє мій веб-сайт будь-кому. Чи можуть бути призначені більш конкретні дозволи?
Неекой

Magento має дозвіл на папки на 775, а дозвіл на файли
Rishabh Rk Rai

FYI, якщо magento 2 знаходиться в "домашньому" каталозі, var/cacheі вам pub/staticпотрібні суїти біти. Я використав: find var/cache -type d -print0 | xargs -0 sudo chmod 1775
Кріс К

Відповіді:


117

Ви можете посилатися на http://devdocs.magento.com/

Важливі речі:

Власник файлової системи Magento: Повинен мати повний контроль (читання / запис / виконання) всіх файлів і каталогів.

Не повинен бути користувачем веб-сервера; це повинен бути інший користувач.

Користувач веб-сервера повинен мати доступ для запису до таких файлів і каталогів: var app / etc pub (і, мабуть, новий у 2.2.1.) Створений

Крім того, група веб-сервера повинна володіти файловою системою Magento, щоб користувач Magento (який входить до групи) може спільно використовувати доступ до файлів з користувачем веб-сервера. (Сюди входять файли, створені адміністратором Magento або іншими веб-утилітами.)

Рекомендуємо встановити дозволи таким чином:

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.

Ви повинні встановити як рекомендовано нижче.

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

Я сподіваюся, що це вам допоможе.


3
Це працює лише для мене \;, наприклад:find ./var -type d -exec chmod 777 {} \;
bpoiss

1
Але це для режиму розробки. Для виробництва це повинно бути груповим читанням - не маю уявлення, як це має працювати
Алекс

3
Я думаю, вам також потрібно chmod u+x bin/magentoвміти виконувати команди консолі.
Volvox

42
друзі не пускають друзів 777
Даррен Фелтон

6
app / тощо 777> Ха-хай приємно. Злому легко. додаток / тощо містить вашу інформацію про db
CompactCode

19

У деяких рідкісних випадках ви не можете використовувати 770 і 660, як, наприклад, @MagenX, 755 і 644 також можуть бути потрібним дозволом. (Я думаю, деякі швидкі користувачі CGI)

Тож у такому випадку ви запускаєте:

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

Це, здається, виправить це, але якщо Magento генерує нові файли чи каталоги, вони матимуть дозвіл 770 та 660 знову. Ви можете змінити ці типові значення chmod у таких файлах:

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

Після цих змін запустіть першу команду ще раз, і після цього новостворені файли вже не повинні бути проблемою.

Примітка: Редагування таких файлів ніколи не є хорошою ідеєю, але я підозрюю, що ці параметри chmod будуть налаштовані в майбутньому, тому я взяв простий шлях.


1
Не можу знайти /lib/internal/Cm/Cache/Backend/File.php на M231
snh_nl

@snh_nl У новішій версії Magento вони більше не встановлюють дозвіл, якщо вони є, схоже, вони використовують 775. Після нової інсталяції можна просто запустити: find. -тип f -exec chmod 664 {} \; знайти. -тип d -exec chmod 775 {} \; знайти ./var -тип d -exec chmod 777 {} \; знайти ./pub/media -type d -exec chmod 777 {} \; знайти ./pub/static -type d -exec chmod 777 {} \; chmod 777 ./app/etc chmod 644 ./app/etc/*.xml chmod u + x bin / magento У корені і вам повинно бути добре.
Даніель ван дер Гард

11

Ви можете використовувати такий метод, як рекомендує документація 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

Як дати дозвіл на запис створеній папці у Windows? @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

Для місцевого розвитку встановити pubі varдо 775 або 777


чому? (Існує мінімальна довжина коментарів)
vitoriodachef

7

Якщо ви використовуєте SELinux ̣ (наприклад, CentOS), спробуйте:

sudo chcon -R -t httpd_sys_rw_content_t var

(звичайно, з кореневої папки magento)


6

У Magento Community рекомендують

Рекомендуємо встановити дозволи таким чином:

Усі довідники мають 770 дозволів. 770 дозволів дають повний контроль (тобто читання / запис / виконання) власнику та групі, і жодних інших прав немає.

Усі файли мають 660 дозволів. 660 дозволів означають, що власник і група можуть читати та писати, але інші користувачі не мають дозволів.

Для більш детальної посилання це посилання https://devdocs.magento.com/guides/v2.3/install-gde/prereq/file-system-perms.html



4

Помістіть цей вміст у вашу кореневу папку, а потім виконайте його за допомогою консолі.

Не забувай chmod +x yourfile.sh.

#!/bin/sh
chmod 2775 -R .

chmod 777 -R ./pub/

chmod 777 -R ./var/

як я можу поставити цей код? як htacces або php-файл
matinict

Уникайте цього, це в основному робить ваш каталог веб-серверів відкритим для громадськості. замість цього прочитайте devdocs, які надає magento, щоб належним чином захистити версію запущеної версії.
themanwhoknowstheman

4

жодних спеціальних дозволів, ви просто переконайтеся, що файли, що належать користувачеві, який виконує php, або в разі cPanel - користувача cpanel, і тієї самої групи

тож ваша команда гарна:

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

просто оновіть власника файлів:

chown -R user:user *

де userвласник, userякий управляє php.

замість того, щоб змінювати дозволи щоразу, увійдіть / працюйте як належний користувач, власник файлів, від root до користувача:

cd /magento/root/folder/
su $(stat -c '%U' index.php) -s /bin/bash
whoami
pwd

Як дати дозвіл на запис створеній папці у 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

Також детальна інформація доступна на веб-сторінці http://devdocs.magento.com/guides/m1x/install/installer-privileges_after.html


5
Питання вимагає поради щодо Magento 2
Flipmedia

0

Я вирішив таким чином для CentOS Linux 7.4.1708 на 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> .

Вам слід уникати використання 777 у файлах та каталогах. Це відкриває ваш магазин для зайвого ризику безпеки. Натомість читайте документи, надані magento для версії, на яку ви працюєте.
themanwhoknowstheman

0

Виконайте ці команди як користувач root. Якщо ви вже дали дозвіл 777, відновіть його, використовуючи перші дві команди, інакше продовжіть решту.

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

Встановіть право власності на користувача Magento та веб-користувачів, використовуючи

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

Запуск цих команд встановлює дозвіл на папки та файли в корені Magento, а також на створення нових файлів у var, pub та створених каталогах.

Не запускайте жодної команди як root користувача, оскільки це може призвести до створення нових статичних файлів із власністю root, що може перешкодити веб-користувачеві отримувати доступ до таких файлів, змушуючи вас надати дозвіл 777. тому, будь ласка, поверніть його назад. Отже, запускайте команди Magento як користувач Magento .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.