Можно ли группе www-data давать права на запись в директорию сайта?

Есть сайт на wordpress, в который нужно удаленно вносить изменения. Права на запись имеет пользователь www—data. Я добавил своего пользователя developer в группу www—data и дал этой группе права на запись в директорию сайта. Правильно ли это с точки зрения безопасности? Если нет, то как лучше организовать удаленное редактирование сайта?


Ответы (2 шт):

Автор решения: KAGG Design

Права на запись у процесса php быть должны в обязательном порядке, иначе много функционала перестанет работать - обновление плагинов, кеширование страниц и скриптов и т.д.

Если php выполняется под пользователем www-data, значит, у этого пользователя должны быть права 644 на файлы и 755 на папки.

Если вы добавили в группу www-data своего пользователя и хотите, чтобы он писал по ftp файлы в папки сайта, то надо дать на все файлы права 664, а на папки - 775. Это позволит избежать ошибок выполнения, указанных выше.

→ Ссылка
Автор решения: Danila Vershinin

На практике, есть только реально один работающий способ безопасно настроить права в LEMP стэке. И как правильно указал @SeVlad - правильно давать права php юзеру и должен быть отдельный php юзер (никак не www-data) даже если речь идет об одном сайте - это нисколько не извиняет того чтобы не делать правильно.

Как правильно расписано здесь, а именно:

  • Создайте отдельного пользователя конкретно под ваш сайт если таковой еще не существует. Именуйте его как короткое название сайта без доменной части, или по назначению или типу CMS например magento, и тд

  • Сконфигурирейте PHP-FPM таким образом чтобы пул для этого сайта исполнялся под этим самым пользователем

  • Поставьте права на все файлы и папки сайта так chown -R example:example /path/to/website/files

  • Добавьте пользователя веб-сервера в группу пользователя сайта: usermod -a -G example www-data

  • Выставьте разрешения таким образом чтобы пользователи группы (а это веб-сервер) смогут читать файлы сайта (а выполнять их или писать им и не надо)

      chmod -R u=rwX,g=rX,o= /path/to/website/files
    

C дефолтным значением umask для обычных пользователей - новые папки и файлы создаваемые пользователем вручную либо через исполнение скриптов - будут читабельными вебсервером.

Безопасно. Нет проблем.

Бонусом что можно легко запретить веб доступ к чувствительным файлам не только через конфиг вебсервера но и просто убрав разрешения для группы:

chmod 0600 some-config.php
chmod g-r some-config.php
→ Ссылка