Можно ли группе www-data давать права на запись в директорию сайта?
Есть сайт на wordpress, в который нужно удаленно вносить изменения. Права на запись имеет пользователь www—data. Я добавил своего пользователя developer в группу www—data и дал этой группе права на запись в директорию сайта. Правильно ли это с точки зрения безопасности? Если нет, то как лучше организовать удаленное редактирование сайта?
Ответы (2 шт):
Права на запись у процесса php быть должны в обязательном порядке, иначе много функционала перестанет работать - обновление плагинов, кеширование страниц и скриптов и т.д.
Если php выполняется под пользователем www-data, значит, у этого пользователя должны быть права 644 на файлы и 755 на папки.
Если вы добавили в группу www-data своего пользователя и хотите, чтобы он писал по ftp файлы в папки сайта, то надо дать на все файлы права 664, а на папки - 775. Это позволит избежать ошибок выполнения, указанных выше.
На практике, есть только реально один работающий способ безопасно настроить права в 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