заметки веб-разработчика

Как избежать ошибок прав на файлы и папки при использовании drush, composer и админки друпала

13 апреля 2020 - 16:40 -- ikode

Что нужно понимать:

1) Для работы админки друпала (веб-морды) апачу необходимо, чтобы у пользователя www-data были права на чтение и запись. Например: username:www-data 664.

2) Drush и Composer работают из консоли, следовательно они создают, редактируют файлы от вашего имени. И ваш пользователь также должен иметь права на их чтение, запись.

Можно добавить своего пользователя в группу www-data во избежании конфликтов с правами. Например когда через консоль пытаешься изменить файл созданный апачем, а у тебя не хватает на него прав, потому что владелец не ты.

А если создавать файлы из консоли, на них может уже не быть прав у апача.

Чтобы не проставлять все права вручную, можно запустить специальный скрипт для drupal 8 в корне директории web (не забудьте поменять имя пользователя ikode на свое):

#!/bin/bash
# permissions for Drupal 8

echo "Установка владельца ikode:www-data для всех папок и файлов"
sudo chown -R ikode:www-data './'

echo "Установка прав 755 для всех папок"
find './' -type d -exec sudo chmod 755 {} \;

echo "Установка прав 644 для всех файлов"
find './' -type f -exec sudo chmod 644 {} \;

echo "Установка прав 775 для sites/default/files"
sudo chmod 775 './sites/default/files'

echo "Добавление прав на запись для поддеррикторий sites/default/files"
sudo chmod g+w -R './sites/default/files'

echo "Установка прав 640 для settings.php"
sudo chmod 640 './sites/default/settings.php'
sudo chmod 640 './sites/default/default.settings.php'

echo "Изменение прав закончено!"

P.S.: Еще есть вариант редактирования файлов под любыми пользователями (нужны рутовские права):
sudo -u www-data nano file.php