Я использовал Apache с suexec и mod_fastcgi. Он запускает обработчики PHP от имени выбранного системного пользователя и слушает запросы через PIPES (протокол fastcgi). Он работает хорошо, но не может передавать код операции через многие обработчики.
Я исследовал подход php-fpm. Это действительно плохо задокументировано. Я вижу, что он работает только как TCP-сервер fastcgi, например 127.0.0.1:9999, под выбранным системным пользователем, и Apache должен подключаться к нему с помощью FastCGIExternalServer или прокси-мода fastcgi.
Что помешает другим локальным пользователям подключиться к 127.0.0.1:9999 и передать свой код обработчику, который работает от имени другого пользователя системы?
Это кажется совершенно небезопасным в общей среде. Я что-то упускаю или что?
Да, они могут отправлять запросы, но чем это отличается от выполнения запросов в браузере или wget? Все, что они получат, - это вывод php.
Они могут вызвать проблемы, забивая ваш php-fpm сервер запросами. Но любой ввод, который они могут отправить, должен обрабатываться так же, как если бы он был получен из запроса браузера.
Но они вмешиваются после того, как могли быть выполнены какие-либо проверки безопасности apache / nginx, такие как mod_security и т. Д. Так что это может быть проблемой, если у вас есть уязвимое приложение php.
Но если у вас есть пулы, настроенные для запуска каждого пула как отдельного пользователя, и вы сохраняете файлы php, настроенные не для чтения, это не должно быть так уж плохо, если я тоже чего-то не упускаю.