Разрешения для Apache2 на свежую установку Ubuntu

После новой установки Ubuntu я пытаюсь выяснить, как сделать разрешения для Apache2. Я использую мои настройки для локальной разработки для сайтов CraftCMS. Это означает, что Apache должен иметь возможность обслуживать файлы, мне нужно иметь возможность редактировать файлы, а инструмент командной строки CraftCMS php должен запускаться из терминала. И это должно работать для нескольких виртуальных хостов.

Я настроил рабочий процесс, но я не уверен, что это правильный путь для достижения всего, чего я хочу.

ТАК я сделал следующее:

После установки всего я выполнил следующие команды для установки разрешений:

sudo adduser $USER www-data
sudo chown $USER:www-data -R /var/www
sudo chmod 0774 -R /var/www
sudo chmod g+s -R /var/www
  • Первые команды добавляются в группа www-data (группа apache2).
  • 2-я строка меняет владельца и группу /var/www/ и подпапки на меня как владельца и www-данные как на группу.
  • 3-я строка добавляет разрешения, чтобы владелец и группа могли читать, писать и выполнять. другие могут только читать.
  • Четвертая строка гарантирует, что любые новые файлы и папки в пределах /var/www будут иметь такие же разрешения.

На данный момент все работает как запланировано. Я могу редактировать файлы, и Apache может запускать сайты локально. Одна вещь, которая не работает сейчас, это инструмент командной строки ./craft, так как у него нет прав на запуск там. Чтобы исправить это, я предложил следующее решение:

alias craft="sudo -u www-data php ./craft"

С этим псевдонимом я могу запустить команду ./craft как www-data, чтобы она всегда выполнялась, так как группа имеет все разрешения, необходимые для выполнения в папке /var/www. (Я не уверен, что это хороший способ исправить это.)

Так вот, все «работает», но это похоже на «хакерский» способ заставить его работать… Я не уверен если это так, как это должно работать. И я хотел бы услышать улучшения.

3
задан 3 August 2019 в 16:33

1 ответ

sudo chmod 0774-R/var/www

Необходимо сделать это 2 командами. 1 для файлов. 1 для каталогов. Это более безопасно для использования 0 для других: обычно Вы только хотите, чтобы пользователь и группа смогли сделать что-либо с файлами. Наименьшее количество разрешающих полномочий было бы установлено как это:

find . -type f -exec chmod 640 {} \
find . -type d -exec chmod 750 {} \

Не высказывание Вас должны сделать это как это! 644, 755 или Ваши 774 является немного более разрешающим, но работает также. Ниже, чем 640/750 возможно также: 600 и 700, Вам так не нужна группа, но это почти никогда не имеет место. Я склонен использовать те 2 команды и если что-то не работает (т.е. запрещенное уведомление от веб-сервера), я был бы полномочия, и попробовать еще раз. Если я заканчиваю с рабочим веб-сайтом, где мне было нужно другим, я знаю, что существует файл, который имеет плохого владельца или полномочия.

ремесло псевдонима = "sudo-u www-данные php./ремесло"

Это работает, но это необходимо? Вы сказали, что использовали 774 в качестве полномочий, таким образом, Ваша группа должна смочь выполнить его. Проверьте от пользователя с

groups

Вы находитесь действительно в группе www-data.

1
ответ дан 1 December 2019 в 17:25

Другие вопросы по тегам:

Похожие вопросы: