Drush и пользовательские разрешения


10

Я вижу, что мой пользователь является членом группы Apache. Я добавил и подтвердил с помощью следующего

$ sudo usermod -a -G apache `whoami`  # add my user to apache group
$ sudo chmod -R g+w .                 # permit group members to write 
$ groups `whoami`                     # confirm I'm in the apache group

Тем не менее, когда я пытаюсь запустить ядро ​​обновления Drush или даже Cron Drush

$ drush cc all

unlink(sites/default/files/css/css_71ba7c25a8d3c47c68a8e05608ae525c.css):[warning]
Permission denied file.inc:482

введите описание изображения здесь

И кеш CSS в этой ситуации выглядит так

$ ll
total 1536
drwxrwxr-x.  2 apache apache  12288 Nov 26 10:12 .
drwxrwxr-x. 11 apache apache   4096 Nov 24 20:35 ..
-rw-rw-r--   1 apache apache 162269 Nov 26 10:06 css_00d5f4d7c5c92cd4f.css
-rw-rw-r--   1 apache apache 158090 Nov 26 10:02 css_0605989692a2119d305.css
-rw-rw-r--   1 apache apache 162269 Nov 26 10:02 css_0779dcac71ee9aa8e02d9e.css

введите описание изображения здесь

Я бы предположил, что моя учетная запись пользователя, которая имеет доступ sudo, должна быть членом группы apache (или www-data), и что файловое дерево должно разрешать доступ для записи группы. Любая помощь или очки в правильном направлении будет высоко ценится.


2
беги newgrp apacheбез судо и попробуй еще раз
Хамид Никмер

2
Вы вышли из системы, а затем снова вошли?
mpdonadio

Ответы:


13

Возможно, гораздо более простой подход заключается в том, чтобы вообще не копаться в назначениях групп вашего пользователя, а вместо этого запускать drush от имени пользователя веб-сервера (то есть: apache, www-data).

Используйте sudo:

sudo -u apache drush

или на Debian / Ubuntu:

sudo -u www-data drush

Создайте псевдоним команды:

Затем, чтобы убедиться, что вы всегда запускаете drush, добавьте псевдоним:

echo "alias drush='sudo -u apache drush'" >> ~/.bash_aliases 

или на Debian / Ubuntu:

echo "alias drush='sudo -u www-data drush'" >> ~/.bash_aliases 

Теперь при запуске любой команды drush вам будет предложено ввести пароль от sudo, и команда запустится от имени пользователя веб-сервера. Больше нет проблем с правами чтения и записи файлов.


1
Когда я запускаю «sudo -u www-data drush», он жалуется, что каталог drush-backups недоступен для записи.
Магматик

1
@Magmatic просто измените права доступа к этой папке, сделайте ее доступной для записи для www-данных, проверьте, кто является ее владельцем.
Бето Авейга

3

Хотя другой ответ является информативным, я теперь использую соответствующее разрешение пользователя, как описано в

Защита прав доступа к файлам и владения

Который открывается с

Файловая система сервера должна быть настроена таким образом, чтобы веб-сервер (например, Apache) не имел разрешения на редактирование или запись файлов, которые он затем выполняет. То есть все ваши файлы должны быть доступны только для чтения для процесса Apache и принадлежать с правами на запись отдельному пользователю.


3
В статье, на которую вы ссылаетесь, не упоминается Drush. Не могли бы вы, пожалуйста, уточнить, какого пользователя вы используете для запуска команд Drush и как его настроить.
JW.

2
Интересно! Я думаю, что вы должны также упомянуть 2 парга, которые следуют за тем, который вы уже цитировали ...
Pierre.Vriens

1
В папке Drupal files веб-сервер должен быть доступен для записи, и в процессе разработки вам, вероятно, понадобится и папка для функций.
Бето Авейга

1

Когда я запускал drush, поскольку www-datadrush больше не был доступен, так как мой $ PATH изменился .

В качестве обходного пути вы можете ввести весь путь к вождению.

Например

sudo -u www-data /home/vagrant/.composer/vendor/bin/drush status

Чтобы получить путь к вашей игре, вы можете запустить:

which drush

Это означает, что вы также можете просто запустить:

sudo -u www-data `which drush` status

что устраняет необходимость жесткого кода пути в команде.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.