Права на файлы/папки 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>
Почитать самостоятельно
- Securing file permissions and ownership
- Modifying Linux, Unix, and Mac file permissions
- Modifying Windows file permissions
- Security of generated PHP files
- Installing Drupal 8. Step 6: Status check
- Create settings.php and the files directory
- What are the recommended directory permissions?
- Грамотная настройка прав доступа к файлам и папкам