Права на файлы/папки Drupal

Веб-сервер должен иметь возможность читать нужные файлы, но не писать в них. Другие пользователи не должны иметь доступа к сайту. Если сайт включает в себя загрузку файлов, серверу даётся разрешение писать только в одну папку.

TLDR

В скобках указывается смягчённый вариант.

  • Все папки - 750 (755), все файлы 640 (644)
  • /sites/default - 550 (750)
  • /sites/default/settings.php - 440 (444)
  • /sites/default/files включая подпапки - 770(775), файлы 660(664). Другие решения представлены ниже.

Более подробно

Как и в других web проектах, в drupal большинство папок имеют права 750(755), а файлы 640(644). Чтобы присвоить такие права выполняются команды, находясь в корне drupal проекта:

sudo chown -R site_admin:www-data *
sudo find . -type d -exec chmod 750 {} \;
sudo find . -type f -exec chmod 640 {} \;

Для работы Drupal требуется база данных, конфигурация БД хранится в файле settings.php в папке sites/default (Drupal 6, 7 и 8).

После установки и настройки сайта на Drupal папка sites/default должна иметь права 550 (чтение/выполнение) [dr-xr-x---], а файл settings.php - 440 (только чтение) [-r--r-----]. Drupal по завершению установки пытается сам поставить такие права и если это не удалось, то следует права выставить вручную:

chmod 550 sites/default 
chmod 440 sites/default/settings.php 
# либо chmod a-w sites/default
# либо chmod a-w sites/default/settings.php

Для загрузки файлов в sites/default/files надо папке назначить группу веб-сервера (www-data для apache), если это не было сделано.

chgrp -Rv www-data sites/default/files

Проблема с папкой files на базе Apache

Если папка files не во владении группы веб-сервера, то рассматривается 2 способа дать возможность веб-серверу загружать в неё файлы. На unix системах можно узнать под каким пользователем работает веб-сервер.

ps aux | grep apache

Команда выдаст подобный результат

apache_user    36610   0.0  0.0  18832   2340  0  S+    6:42PM       0:00.00 grep apache

В первом столбце будет пользователь веб-сервера. В рассматриваемом случае пользователь - apache_user. Чтобы сделать папку доступной для записи, необходимо сделать такого пользователя владельцем этой папки:

chown -R apache_user sites/default/files

Если нет прав на изменение владельца папки, то следующее решение это установка прав записи на папку для группы. Делается командой:

chmod -R 0770 sites/default/files 

Скрываем версию Drupal

Распространено мнение, что скрытие установленной версии CMS усложняет взлом системы. Чтобы усложнить задачу идентифкации версии, достаточно удалить файлы документации или сделать их недоступными для чтения. В первую очередь это касается файла CHANGELOG.txt. Для каждого из скрываемых файлов вызывается следующая команда.

chmod a-r <filename>

Почитать самостоятельно

Похожие записи