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

Ошибка chroot PHP-FPM

Я использую lighttpd и php-fpm.

Скрипт .php обрабатывается с правильным разрешением пользователя, я вижу результат в своем браузере. На данный момент все работает правильно, если я прокомментирую параметр chroot = в файле конфигурации PFM. если я добавлю его, я всегда получаю ошибку 404 not found.

Корень моего документа (в файле конфигурации lighttpd): / home / lighttpd / vhosts / website / web

Как я могу использовать параметр chroot? Какой путь мне нужно использовать?

Спасибо!

Помните, что каждый раз, когда вы используете chroot, ваша среда chroot'd должен содержать все тебе нужно. В этом случае вам понадобятся php.exe, php.ini и все ваши сценарии .php, просто для начала. Если вашему веб-приложению необходимо писать в определенные каталоги (например, / tmp), это также должно быть внутри вашего chroot.

Помните, что chroot буквально означает «изменение корня», то есть изменение корня вашей файловой системы. Итак, если вы хотите chroot php-fpm, например, / home / lighttpd /, тогда, если он должен писать в / tmp, который на самом деле является / home / lighttpd / tmp, убедитесь, что он существует. Если вы ищете /etc/php/php.ini, это аналогично /home/lighttpd/etc/php/php.ini - по сути, ведущий '/' в любом пути к файлу для приложения chroot'd заменяется на путь chroot.

Это усложняет настройку среды chroot'd, поскольку вам нужно создать по сути зеркало тех частей вашей корневой файловой системы, которые будут необходимы в вашем chroot-пути. Это также означает, что вы должны знать все, что нужно вашей среде chroot'd.

Я рекомендую вообще не возиться с chroot. В лучшем случае это очень тонкий уровень безопасности, требующий усилий, чтобы заставить его работать почти бесполезно, и, честно говоря, я думаю, вам лучше будет убедиться, что php-fpm работает в надлежащем пользовательском контексте (т.е. , а не root) и что вы используете соответствующие разрешения файловой системы, чтобы предоставить этому пользователю только минимально необходимые привилегии в вашей системе. Это включает в себя обеспечение того, чтобы этот пользователь вообще не мог войти в интерактивную оболочку (удалите пароль пользователя и установите для своей оболочки / bin / false или / bin / nologin) и не имеет sudo привилегии на всех (кроме случаев крайней необходимости, а затем только предоставить sudo доступ к нужным командам).