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

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

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

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

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

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

1 ответ

Решение

Я предпочитаю использовать 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}
Другие вопросы по тегам