Какие правильные права на файлы и директории web-проекта?

Здравствуйте.

Имеется сервер на Linux (nginx + php5-fpm) с web-проектом. В общем случае, имеются папки с кодом проекта, папка web с фронт-контроллером и ресурсами, папки с загружаемыми пользователями файлами, а также папка с логами и кэшем.

Подскажите, пожалуйста, какие права на какие папки/файлы должны быть и у какого пользователя? Для nginx в конфиге прописан пользователь www, но сейчас nginx запускается из-под рута, в связи с чем в браузере открываются даже файлы из папки web с отключенными разрешениями на чтение, как правильно исправить эту проблему?
  • Вопрос задан
  • 9813 просмотров
Пригласить эксперта
Ответы на вопрос 3
@tahoa_cleo
Для nginx в конфиге прописан пользователь www, но сейчас nginx запускается из-под рута,
1. зачем было менять дефотного юзера, www создан?
2. а как по вашему должен стартовать nignx? Рекомендую к прочтению. Так же уделите внимание на master process и worker process
3. Надеюсь, что к настройке php5-fpm был подход с толком и поэтому для каждого домена был создан свой пул. Ну так вот, в пуле php5-fpm требует валидных user и group для document root.
4. Подводя итог, права на папки - 755, на файлы - 644, owner user:group
hint:
find /var/www/vhosts/myperfectwebsite.com -type d -exec chmod 0755 {} \;
find /var/www/vhosts/myperfectwebsite.com -type f -exec chmod 0644 {} \;

совет: эта тема очень важна, поэтому на неё стоит потратить 2-4 часа.
Ответ написан
Комментировать
miraage
@miraage
Старый прогер
Запускать nginx под www (или www-data, как там).
Весь /var/www у меня 664 на файлы, 775 на папки, owner www-data:www-data.
Мой ssh юзер состоит в группе www-data.
Ответ написан
Комментировать
@kfuntov
Самой правильной(броневой) практикой вроде как считается - создание двух пользователей для проекта: для деплоя и для работы сервера. Помещение их в одну группу.
Выставление прав на большинство (по возможности все) фалы проекта - 644.
Выставление прав на большинство (вот тут скорее всего не все) директории проекта - 755.
Для тех фалов/директорий, куда должен мочь писать сервер (логи, кеш и т.п.) - 664 и 775 соответственно.
Owner у всего, что не создал сервер: пользователь_для_деплоя:общая_группа .
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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