Отказ от ответственности: Прежде чем кто-либо умно упомянет Google (или что-то подобное), я просто хотел бы отметить, что я задаю этот вопрос, потому что не могу найти статью или статьи, которые мне нравятся.
Предисловие:
Инстанс Amazon EC2 Micro (VPS) с Сервер Ubuntu 10.10 + nginx + php-fpm + Wordpress.
Вопрос:
Очевидно, нет правильного или неправильного ответа, но тем не менее - Учитывая мой стек, какую структуру каталогов и разрешения для пользователей / групп вы бы порекомендовали?
Конечно, безопасность всегда вызывает беспокойство, поэтому идеальная структура / разрешения не будут иметь рисков для безопасности (например, chmod 777 wp-content), но также не должны иметь проблем с правильной работой (загрузка изображений в wp-content, плагины). Также помните, что мы имеем дело с Nginx, а не с Apache.
Я пробовал несколько решений, ни одно из которых меня пока не устраивает. Надеемся получить лучшие идеи!
Поместите WordPress в корневой каталог, определенный с местоположением сервера в вашем nginx sites-enabled / site-name.conf
Используйте SVN для загрузки и установки WordPress
$ cd public_html
$ svn co http://core.svn.wordpress.org/tags/3.1.2 .
chown www-data:www-data public_html/ -R
Убедитесь, что Nginx работает как www-data, или измените пользователя и группу на nginx выше.
Когда WordPress будет установлен, все категории будут 755, а файлы будут 644, что безопасно.
На данный момент я составляю руководство по этому поводу по той причине, что нет много хорошей информации о том, как лучше всего настроить точную архитектуру, которую вы описали выше.
Моя конфигурация похожа на конфигурацию Chirs_O, описанную выше.
/ SRV / www /
/site1.com/logs
/site1.com/public_html
/site2.com/logs
/site2.com/public_html
/site3.com/logs
/site3.com/public_html
В ситуации, когда я единственный администратор, которому необходимо управлять файлами на каждом сайте, я обычно передаю право владения файлом конкретному пользователю, чтобы я мог легко перемещать файлы scp / ftp с локального на каждый сайт.
Обычно я использую следующую команду
chown -R myuser:myuser /site1.com
Это позволяет мне передавать файлы без проблем с разрешениями, а также является хорошей безопасной установкой для обслуживания этих файлов.
Обратной стороной этой конфигурации является то, что вы столкнетесь со всевозможными проблемами с установкой плагинов, обновлениями WordPress и т. Д. (И загрузкой изображений).
Перед установкой плагинов и обновлений WordPress я обычно меняю владельца сайта с myuser на www-data с помощью той же команды
chown -R www-data:www-data /site1.com
Затем я устанавливаю все плагины, которые мне нужны, а затем сбрасываю разрешения обратно для myuser.
Некоторые люди оставляют www-data в качестве основного владельца, но я понимаю, что это не лучшая настройка безопасности, но я наткнулся на конфигурацию разрешений для nginx / php5-fpm, но которая обеспечивает простоту передачи файлов под отдельными учетными записями ftp / ssh, позволяя Плагин WordPress устанавливает / обновляет без необходимости устанавливать разрешения 777 для определенных папок, что является проблемой и имеет свои собственные проблемы с безопасностью.
В настоящее время я изучаю альтернативную конфигурацию, в которой я настраиваю отдельные хосты непосредственно в отдельных учетных записях каждого пользователя, например.
/home/myuser/www/site1.com/public_html
Это гарантирует, что учетная запись ftp / ssh для этого пользователя будет ограничена его собственной домашней учетной записью. В настоящее время все еще существует необходимость вернуть право собственности на www-data для обновлений wordpress и т. Д., Но я пытаюсь выяснить, есть ли безопасный способ добавления этих учетных записей пользователей в группу www-data, чтобы разрешить лучший из обоих мировых сценариев. Сообщу вам, если я получу рабочий конфиг.