Как ограничить php скрипты только папкой юзера?
Как ограничить php скрипты только папкой юзера?
Для теста залил на созданный домен шелл скрипт - файл менеджер на php. Так вот он оказывается может выходить из папки домена и выходить вплоть до верхнего уровня. В результате можно перейти в любую папку. Например ../../../../../etc/httpd/conf.d/ и почитать конфиги. Изменить конфиги не удалось, но на чтение открываются. Конечно же таким образом можно много чего найти на сервере.
Как можно запретить подобным php скриптам выходить за пределы папки юзера? Сделать бы примерно как у ФТП, там нельзя выйти за пределы домашней директории.
Как можно запретить подобным php скриптам выходить за пределы папки юзера? Сделать бы примерно как у ФТП, там нельзя выйти за пределы домашней директории.
Re: Как ограничить php скрипты только папкой юзера?
Таким образом можно получить только список пользоваталей. Узнать информацию о доменах не выйдет, так как конфигурация недоступна на чтение.
Добиться нужного поведения можно при помощи директивы open_basedir. Я подготовил шаблоны с примерами. Чтобы установить их, выполните:
Затем зайдите в нужный домен и установите шаблон basedir. Если это то, что нужно, сделайте этот шаблон шаблоном по умолчанию в пакете.
Добиться нужного поведения можно при помощи директивы open_basedir. Я подготовил шаблоны с примерами. Чтобы установить их, выполните:
Code: Select all
cd /usr/local/vesta/data/templates/web/httpd/
wget http://c.vestacp.com/0.9.8/rhel/templates/web/httpd/basedir.tpl
wget http://c.vestacp.com/0.9.8/rhel/templates/web/httpd/basedir.stpl
Re: Как ограничить php скрипты только папкой юзера?
Только не забывайте что есть еще перловые скрипты, на которые open_basedir не действует. Некоторые мелкие хостеры забывают про это, и уверенные в своей безопасности, плохо следят за правами на файлы. Иногда попадаются файлы бэкапов с правами на чтение )
Re: Как ограничить php скрипты только папкой юзера?
Попробовал. Шеллы хорошо ограничило. Думаю open_basedir можно добавить во все шаблоны, хуже не будет, преимущество на лицо.skid wrote:Таким образом можно получить только список пользоваталей. Узнать информацию о доменах не выйдет, так как конфигурация недоступна на чтение.
Добиться нужного поведения можно при помощи директивы open_basedir. Я подготовил шаблоны с примерами. Чтобы установить их, выполните:Затем зайдите в нужный домен и установите шаблон basedir. Если это то, что нужно, сделайте этот шаблон шаблоном по умолчанию в пакете.Code: Select all
cd /usr/local/vesta/data/templates/web/httpd/ wget http://c.vestacp.com/0.9.8/rhel/templates/web/httpd/basedir.tpl wget http://c.vestacp.com/0.9.8/rhel/templates/web/httpd/basedir.stpl
Re: Как ограничить php скрипты только папкой юзера?
Bitrix не одобряет open_basedir.Думаю open_basedir можно добавить во все шаблоны, хуже не будет
Re: Как ограничить php скрипты только папкой юзера?
sartas wrote:Bitrix не одобряет open_basedir.Думаю open_basedir можно добавить во все шаблоны, хуже не будет
нормально оно работает
сайт на битриксе, Nginx+php-fpm
вот содержание настройки пула
Code: Select all
[mayflower.ru]
listen = /var/run/php5-mayflower.sock
listen.mode = 0666
user = mayflower
group = mayflower
chdir = /var/www/vhosts/php/mayflower.ru/
php_admin_value[upload_tmp_dir] = /var/www/vhosts/php/mayflower.ru/tmp
php_admin_value[upload_max_filesize] = 100M
php_admin_value[post_max_size] = 100M
php_admin_value[open_basedir] = /var/www/vhosts/php/mayflower.ru
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source
php_admin_value[cgi.fix_pathinfo] = 0
php_admin_value[date.timezone] = Europe/Moscow
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4