Дозволи та користувальницькі дії


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 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

Можливо, набагато простішим підходом є взагалі не спілкуватися з груповими завданнями вашого користувача, а замість цього виконувати ударну функцію як користувача веб-сервера (тобто: apache, www-data).

Використовуйте судо:

sudo -u apache drush

або на debian / ubuntu:

sudo -u www-data 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-резервного копіювання не може бути записаний.
Чарівний

1
@Magmatic просто змініть дозволи на цю папку, зробіть її доступною для запису для www-даних, перевірте, хто є власником.
Beto Aveiga

3

Хоча інша відповідь є інформативною, я зараз використовую належний дозвіл користувача, як описано в

Забезпечення прав і прав власності на файли

Який відкривається с

Файлова система сервера повинна бути налаштована так, щоб веб-сервер (наприклад, Apache) не мав дозволу редагувати або записувати файли, які він виконує. Тобто всі ваші файли повинні бути "лише для читання" для процесу Apache та мати права доступу на запис окремим користувачем.


3
У статті, на яку ви посилаєтесь, не згадується Друш. Чи можете ви, будь ласка, уточнити, якого користувача ви використовуєте для запуску команд Drush та як налаштовано цього користувача.
JW.

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

1
У папках Drupal файли потрібно писати веб-сервером, і при розробці вам, мабуть, це знадобиться і для папок функцій.
Beto Aveiga

1

Коли я побіг барабан, бо www-dataбарабан більше не був доступний, оскільки мій $ 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.