Грамотная настройка прав доступа к файлам и папкам

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 2 апреля 2013 в 21:23
1

Обновлял сайт на хостинге "Джинс" до версии 7.21 и напоролся на целую череду проблем:

При обновлении модулей:

Обновление модулей и тем требует FTP доступа на ваш сервер
Updating modules and themes requires FTP access to your server

При включении агрегации css/js:

Warning: file_put_contents() [function.file-put-contents]:
Filename cannot be empty in file_unmanaged_save_data()
(line 1903 of includes/file.inc).

Тех. поддержка была немногословной: https://www.jino.ru/support/faq/ftp/

Сверился с настройками прав на другом сайте (размещенном на ит-патрол), вроде все совпадает, но там все работает без ошибок.

Гугл говорит, что проблема с агрегацией решается установкой 777 на папку default/files. Но мнения о том, на сколько это безопасно - противоречивы.

Товарищи, подскажите, пожалуйста, правильные file permissions.

Комментарии

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 3 апреля 2013 в 12:44

Алексей, спасибо за отклик! Именно такие и стоят, за исключением settings.php, для которого 444. Но обе проблемы остались :(

Аватар пользователя sas@drupal.org sas@drupal.org 3 апреля 2013 в 13:04

Дело в том что да некоторые хосты говорят ставьте 777 , но я бы казал им - сделайте чтобы работало на 755

Аватар пользователя drupby drupby 3 апреля 2013 в 13:04
"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:

Обычно папки 755, файлы 644

а в install.txt написано :
"mkdir sites/default/files
chmod a+w sites/default/files"

Аватар пользователя drupby drupby 3 апреля 2013 в 13:14
"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:

На заборе тоже много чего написано ...

если не хотите следовать официальной документации ,то
вот здесь всё о правах грамотно расписано

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 3 апреля 2013 в 14:01

Все верно, проблемы у меня :(

drupby, спасибо за презентацию, очень интересно и весело, хотя вроде как и не до смеха. Вроде гуглил не один час, а на такую классную презентацию так и не наткнулся.

Попробовал установить на sites/default/files права 777 (а потом еще на всякий случай на sites/default/files/css и sites/default/files/js) - не помогло.

Заметил что не было временной папки. Указал в настройках admin/config/media/file-system путь /tmp. В корне появилась папка с правами 775. Опять попробовал вариант с 777 для files - все равно при включении агрегации вылетают ошибки записи файлов.

Очень смущает надпись "Обновление модулей и тем требует FTP доступа на ваш сервер." на странице /admin/modules/update. Может все из-за этого?

Аватар пользователя drupby drupby 3 апреля 2013 в 14:05

а я бы свалил от этого хостера - больше времени и нервов потратите на настройку , тем более совершенно не разбираетесь в администрировании

Аватар пользователя Hades Hades 1 марта 2015 в 11:42

Очень не плохой скрипт был дан в комментарии... https://www.drupal.org/node/244924#comment-6600078
Изменил и доработал его под себя:

# Script made by Alex Belyj, admin@azfest.ru
echo "Начинаю изменение прав..."
echo "Устанавливаю владельца www-data для всех папок и файлов"
chown -R www-data:www-data './'
echo "Выставляю права 755 для всех папок"
find './' -type d -exec chmod 755 {} \;
echo "Выставляю права 644 для всех файлов"
find './' -type f -exec chmod 644 {} \;
echo "Выставляю права 440 для .htaccess"
chmod 440 './.htaccess'
echo "Выставляю права 775 для tmp"
chmod 775 './tmp'
echo "Выставляю права 440 для tmp/.htaccess"
chmod 440 './tmp/.htaccess'
echo "Выставляю права 775 для sites"
chmod 775 './sites'
echo "Выставляю права 775 для sites/default"
chmod 755 './sites/default'
echo "Выставляю права 775 для sites/default/files"
chmod 775 './sites/default/files'
echo "Корректирую права g+w для поддеррикторий sites/default/files"
chmod g+w -R './sites/default/files'
echo "Выставляю права 440 для sites/default/files/.htaccess"
chmod 440 './sites/default/files/.htaccess'
echo "Выставляю права 440 для sites/default/settings.php"
chmod 440 './sites/default/settings.php'
echo "Выставляю права 440 для sites/default/default.settings.php"
chmod 440 './sites/default/default.settings.php'
echo "Выставляю права 775 для sites/all/themes"
chmod 755 -R './sites/all/themes'
echo "Выставляю права 775 для sites/all/modules"
chmod 755 -R './sites/all/modules'
echo "Выставляю права 775 для sites/all/libraries"
chmod 755 -R './sites/all/libraries'
echo "Изменение прав закончил! Убедись, что всё верно..."

1. Скопируйте код скрипта и сохраните под названием "permissions.sh". Соблюдайте кодировку UTF-8 (для нормального отображения кириллических символов в комментариях echo командной строки) и UNIX формат окончания строк (иначе получите /R в конце каждой строки):

nano /var/www/permissions.sh

2. Скопируйте файл permissions.sh в корень вашего сайта Drupal 7:

cp /var/www/permissions.sh /ваш_сайт

3. Перейдите в корень вашего сайта:

cd /ваш_сайт

4. Выполните команду:

bash permissions.sh

PS: Если у вас "чистый" Drupal, то некоторые папки, например libraries или files, ещё могут быть не созданы. Так же если вы используете папку tmp вашей ОС, то в вашем Drupal её не будет. В этом случае выведется ошибка, что файла или папки не существует - это нормально. Рекомендую пользоваться скриптом на финальных этапах разработки или при переносе на хостинг, когда вся структура файлов и папок уже создана.
PSS: Работа скрипта многократно проверена на Drupal 7 сайтах в ОС Debian 7 Wheezy.