Доброго времени суток. Собственно, сабдж. Подробнее:
Необходимо ограничить доступ PHP к файловой системе сервера (конкретно, запретить выходить из домашнего каталога).
Это можно достаточно просто реализовать через директиву open_basedir, однако в таком случае, скрипты начинают работать медленнее обычного, в частности, некоторые пользователи утверждают, что задержка запросов к базе данных, составляет более секунды на 1 запрос.
Adamos, "Поэтому realpath_turbo это не рекомендуется для любого хостинга среды. Вместо того, чтобы полагаться на open_basedir, Вы должны создавать виртуальные машины или используйте контейнеры (символы отладки), чтобы безопасно отделить пользователей без каких-либо производительности деградация." - цитата из GitHub от автора. Если у меня к примеру на VPS крутятся несколько городских сайтов, мне что под каждый сайт виртуалку создавать? Неужели нельзя настроить PHP использовать изолированный контейнер в рамках одного виртуального хоста? На хостингах ведь я не могу взять и выйти за рамки своего каталога. (На большинстве хостингов).
roswell, Конкретно разработчик (?) OpenServer так сказал, который я использую как отладочный сервер. Я конечно не склонен сразу верить всему что сказано, однако в другом месте было сказано что это характерно для фреймворков и CMS в которых код подключается через include.
Adamos, небольшая поправка, в качестве сервера сейчас используется ОС Windows (да, понимаю, что звучит ужасно). В ближайшее время, планирую переехать на Debian 6/CentOS 6, вот там уже буду играться с распределением прав.
Как вариант - Собрать docker контейнер, в котором будет работать php проект. Даже если кто-то попытается через PHP выйти за пределы домашней директории он ничего не увидит, ибо скрипты работают внутри контейнера.
При 256 мегабайтах ОЗУ много чего не сделаешь. Даже если open_basedir не тормозил бы систему и даже если бы в этом сервере был только apache и php-скрипты (mysql в отдельном сервере) — такой сервер все равно бы тупил при первом наплыве посетителей.
Поэтому лучше всего взять дешевый виртуальный сервер с 1 гигабайтом оперативной памяти и в нем запускать docker под такие вещи.
Но если конечно попробовать, то я думаю все запустится и на 256 мб. docker работает на уровне ядра и не жрет прям уж очень много оперативной памяти.
just_hank_moody, То есть я должен буду поднять новый экземпляр "lamp" для каждой виртуалки? Справедливости ради, никогда не используя Docker, у меня сложилось впечатление что это эдакий VirtualBox, только вместо образов ОС, отдельные контейнеры в которых запускается необходимый софт.
snovazabilparol, В принципе все верно. Docker это система контейнеризации. Ресурсы оно не сильно жрет ибо работает на базе одного ядра. Основной плюс Docker - возможность быстро запускать заранее подготовленный контейнер. Вместо того, чтобы каждый раз настраивать LAMP достаточно собрать свой контейнер и потом запускать его парой команд.