Права на файлы и папки в проектах Drupal 7

       Очень часто многие сталкиваются с проблемами с правами в Drupal, далее разберем их подробнее. В проектах Drupal веб сервер (Apache, Nginx, etc) должен иметь возможность читать  файлы, но не записывать в них. Если Drupal включает в себя загрузку файлов, веб серверу даётся разрешение записывать их.

Быстрое решение

Согласно рекомендациям структура проекта Drupal должна быть такой:

  •   Все папки - 750, все файлы 640
  • /sites/default - 550
  • /sites/default/settings.php - 440
  • /sites/default/files включая подпапки - 770, файлы 660
 
Используя ssh подключаемся к серверу переходим в корню нашего проекта и выполняем следующие команды:
 
sudo chown -R www-data:www-data *
sudo find . -type d -exec chmod 750 {} \;
sudo find . -type f -exec chmod 640 {} \;
 
* sudo (выполнение команды от root), chown (смена владельца), -R (рекурсивно), www-data (пользователь веб сервера), find (поиск), . (текущий каталог), -type d (папка), -type f (файл), -exec (выполнить), chmod (установить права).
В итоге первая команда устанавливает на все папки и файлы владельца www-data, вторая и третья выполняет поиск по текущему каталогу папок и файлов устанавливает необходимые разрешения.
 
Так же нам необходимо защитить наш проект Drupal для этого выполняем следующие команды:
 
sudo chmod 550 sites/default
sudo chmod 440 sites/default/settings.php
 
В итоге папка site/default получает права чтение и выполнение, а файл site/default/settings.php получает права только чтение
 
 
P.S. Так же есть скрипт для автоматизации данного процесса.