Лучший способ установить разрешения с 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}