LINUX.ORG.RU
решено ФорумAdmin

nginx+php-fpm - права на каталоги, группы

 , , ,


1

2

Нужна помощь.. Debian jessie
Имеем пользователя web, c домашним каталогом /home/web/www/site.ru
И пользователя www-data, который состоит в группе web

Вопрос: как правильно сделать, чтобы у nginx и php5-fpm был доступ в домашнюю директорию пользователя web?

Шаги:

# useradd web -b /home/ -m -U -s /bin/false
 - pass
# passwd web

Создаем необходимые каталоги:

# mkdir -p -m 755 /home/web/www/site.ru
# mkdir -p -m 754 /home/web/www/logs.site.ru
# chmod 750 /home/web/

Предоставляем пользователю web права на них:

# chown -R web:web /home/web/www/site.ru
# chown -R web:web /home/web/www/logs.site.ru

Предоставим Nginx доступ в домашнюю директорию пользователя web: добавив пользователя www-data в группу web

# usermod -a -G web www-data
# id www-data

Рестартуем nginx и php5-fpm:

# /etc/init.d/php5-fpm restart %% /etc/init.d/nginx restart
- Сайт не работает.., не хватает прав
А если прописать пользователя и группу web, в http://www.conf, то все ок.
# nano /etc/php5/fpm/pool.d/www.conf
user = web
group = web

Как быть =)

Каждому сайту соответствует пользователь и группа. Файлы сайта принадлежат этим пользователю и граппу. Права на файлы сайта что-то вида ug+rx. Пул php-fpm запускается от пользователя и группы соответствующих сайту. Пользователь www-data (от которого работает nginx) входит в группу соответствующую сайту.
Всё.
Можно выставить файлам сайта права 750, тогда php сможет делать с ними что угодно (потому-что работает от имени владельца файлов), nginx сможет их читать что-бы раздавать статику (потому-что он входит в группу-владельца файлов), а все остальные идут лесом (потому-что не положено).

MrClon ★★★★★ ()
Ответ на: комментарий от MrClon

Ну и убедиться что все упомянутые пользователи могут пройти в директорию с файлами сайта. Т.е. что у одной из вышестоящих директорий не стоят какие-то слишком драконовские права

MrClon ★★★★★ ()

PHP нужны свои права, nginx свои.

Прописывая для PHP пользователя и группу вы даёте ему доступ.

P.S. Если www-data входит в www, то права вроде 755, 754 и 750 слишком щедрые.

ngnix нужны права на исполнения на директорию и чтение на файлы. Разрешать чтение (листинг) директории ему не обязательно.

PHP нужны права на то же самое, но для своих пыхных файлов. То есть тех, которые nginx ему направит.

Прав 710 на директории и 740 должно хватить, как я помню.

Если вы не против выставить права для «других», то с пользователями и группами вообще можно не заморачиваться. 701 для директорий и 704 для файлов должно быть достаточно. Опять же, если я помню корректно.

А ещё хочу напомнить про /var/www и /srv. И что при наличии www-data как-то странно заводить ещё и www. :)

lexazloy ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.