Назад | Перейти на главную страницу

Лучший способ настроить разрешения с помощью nginx + php-fpm на общем хостинге?

Я использую сервер общего хостинга с nginx и php-fpm на Debian.

Все работает нормально, php-fpm имеет отдельные пулы для каждого пользователя, работающего как отдельные пользователи, и у каждого из них есть свои носки.

Однако Nginx работает как www-data, потому что я не хочу иметь отдельные процессы nginx для каждого пользователя.

Это означает, что для того, чтобы nginx имел доступ к данным пользователей, права доступа / home должны быть drwxr-x - x. Проблема в том, что все пользователи имеют доступ к файлам других пользователей.

Что было бы лучшим способом предоставить nginx доступ к файлам пользователей, не предоставляя доступ другим пользователям. Запуск nginx от имени пользователя root невозможен. Но поможет ли AppArmor?

Я предпочитаю использовать для этого ACL. Например:

setfacl -R -m user:www-data:rx,d:user:www-data:rx /home

Дает www-data доступ пользователя для чтения файлов и просмотра каталогов в /home, и применяет тот же ACL ко всем новым файлам или каталогам, созданным позже.

После применения домашние каталоги пользователей больше не должны быть исполняемыми во всем мире (например, chmod o= /home/$USER), поэтому пользователи больше не могут читать файлы друг друга, но nginx может.

Обратите внимание, что если некоторые каталоги должны быть доступны для записи веб-сервером, вы можете настроить их для каждого конкретного случая, изменив оба экземпляра разрешений. rx к rwx. Например:

setfacl -R -m user:www-data:rwx,d:user:www-data:rwx /home/user/public_html/wp-content/{cache,uploads}