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

Запуск php как fastcgi против мода Apache с разрешениями dir 777

Привет, я веб-разработчик по профессии, а не серверный инженер, пожалуйста, терпите меня!

У меня только что появился новый сервер Ubuntu LAMP VPS, который я пытаюсь настроить.

Я понимаю, что запуск php как apache-mod - это самый быстрый способ запустить php. но для этого я должен установить свои каталоги на 777, чтобы php мог писать в них. И, в свою очередь, ftp больше не может удалять каталоги, созданные php.

Это не кажется идеальным.

Я понимаю, что при использовании fast-cgi «пользователь php» и «пользователь ftp» одинаковы, поэтому у вас не возникает этих проблем, и вам не нужно открывать каталоги на 777, чтобы разрешить запись, что, как я понимаю, является проблемой безопасности.

Итак, каковы плюсы / минусы

Спасибо

РЕДАКТИРОВАТЬ

Так что хорошо, что 777 явно не годится. Но как мне сделать так, чтобы пользователь apache-mod и ftp был одним и тем же - как уже упоминалось, я не администратор сервера! Спасибо

Apache с mod_php прост в настройке и работает быстро, но не масштабируется. Для каждого запроса требуется полный поток, включающий apache и все его модули. Это именно то, что делает его быстрым - каждый запрос получает выделенный экземпляр php. С другой стороны, очень небольшое количество одновременных запросов займет всю доступную память и замедлит ваш сервер до обхода.

Если вы пойдете по маршруту mod_php - ответ @fuscata предлагает хороший подход - используйте группы, чтобы ваши каталоги и файлы не могли записывать "другие". Другой вариант - просто сделать вашего FTP-пользователя таким же, как пользователь, от имени которого запускается apache, хотя это не очень хорошо с точки зрения безопасности.

Я определенно предлагаю подход fast-cgi - помимо того факта, что вы можете правильно реализовать свои разрешения, он намного лучше использует доступные ресурсы. Хотя для одного запроса это немного медленнее, при более высокой нагрузке общая производительность будет намного лучше, чем с mod_php.

Используйте mod_fastcgi с php-fpm - настройте пулы php-fpm с именами пользователей, соответствующими вашим пользователям FTP, и используйте максимально ограничительные разрешения - 755 обычно приемлемо для каталогов (но вы должны иметь возможность использовать 750) рассмотрите возможность установки разрешений на ваши файлы PHP на 640 - для "другого" на самом деле не нужны разрешения на чтение ваших файлов (это особенно верно для файлов, которые содержат пароли базы данных, ключи электронной торговли и т.д., хотя они должны быть установлены на 600 - или 400, как только вы введете данные).

Если вы решите придерживаться mod_php, есть несколько вариантов, но вот что я предлагаю:

  1. Создайте нового пользователя, скажем ftpuser с группой ftpuser
  2. Убедитесь, что у пользователя нет ничего важного в его домашнем каталоге (который вы можете установить в DocumentRoot), например. .my.cnf, почтовые файлы, закрытые ключи ssh и т. д.
  3. Добавьте пользователя Apache (www-data) в группу ftpuser
  4. установить маску пользователя Apahce до 002 в / etc / apache2 / envvars
  5. установите umask ftpuser на 002 (так что файлы будут иметь права доступа 775 по умолчанию) и / или измените настройки в вашем FTP-клиенте для достижения этого.
  6. в соответствующих каталогах / файлах: chgrp -R ftpuser, chmod -R 775, chmod -R g + s (это должно привести к тому, что все файлы / каталоги, созданные www-data, сохранят группу ftpuser)