Моя практика создания нового сайта Drupal на сервере заключается в том, чтобы иметь пользователя, который входит в группу веб-серверов (обычно Apache), и чтобы этот пользователь владел всеми файлами Drupal. В Ubuntu это команды для настройки:
# Create a new example user, setting up /var/www/example as their home dir.
useradd -s /bin/bash -d /var/www/example -m example
# Now add that user to the Apache group. On Ubuntu/Debian this group is usually
# called www-data, on CentOS it's usually apache.
usermod -a -G www-data example
# Set up a password for this user.
passwd example
Как только я это настрою, я войду в систему под этим пользователем и установлю Drupal по адресу / var / www / example / docroot или аналогичный, а затем создам каталог файлов вручную и скопирую файл settings.php. Поскольку мы вошли в систему в качестве нашего примера пользователя перед копированием в Drupal, наши права доступа к файлам и их права должны автоматически настраиваться для всех основных файлов и сценариев Drupal (включая файлы .htaccess).
su - example
cd docroot
cp sites/default/default.settings.php sites/default/settings.php
# Temporarily give the web server write permissions to settings.php
chgrp www-data sites/default/settings.php
chmod g+w sites/default/settings.php
Теперь давайте настроим каталог файлов.
# Create the directory.
mkdir sites/default/files
# Now set the group to the Apache group. -R means recursive, and -v means
# verbose mode.
chgrp -Rv www-data sites/default/files
Далее мы настроим разрешения, чтобы веб-сервер всегда мог записывать в любой файл, который находится в этом каталоге. Мы делаем это с помощью 2775 в нашей команде chmod. 2 означает, что идентификатор группы будет сохранен для любых новых файлов, созданных в этом каталоге. Это означает, что www-данные всегда будут группой для любых файлов, тем самым гарантируя, что веб-сервер и пользователь всегда будут иметь права на запись для любых новых файлов, размещенных в этом каталоге. Первые 7 означают, что владелец (пример) может R (Чтение) W (Запись) и X (Выполнить) любые файлы здесь. Вторая цифра 7 означает, что группа (www-данные) также может отправлять и записывать любые файлы в этом каталоге. Наконец, 5 означает, что другие пользователи могут R и X файлы, но не могут писать.
chmod 2775 sites/default/files
Если в этом каталоге есть какие-либо файлы, убедитесь, что на веб-сервере есть права на запись.
chmod g+w -R sites/default/files
Теперь Drupal готов к установке. Когда закончите, ОЧЕНЬ важно вернуться в settings.php и убедиться, что у всех пользователей есть только права на чтение.
chmod 444 sites/default/settings.php
Это оно! Эта настройка гарантирует, что вы избежите любых ситуаций, когда пользователь, владеющий каталогом, или веб-сервер не могут записывать / изменять / удалять файлы в каталоге файлов.