Welcome! Log In Create A New Profile

Advanced

chroot + php-fpm

Posted by PandoraBox2007 
PandoraBox2007
chroot + php-fpm
January 22, 2010 09:26PM
В процессе обсуждения в highload_php_ru оказалось, что в услвиях
chroot, fopen("http://yandex.ru") не работает, т.к. неможет
отрезолвить адрес.

Хотел было тоже поковыряться в поисках решения, но это сделали быстрей
меня. Оставляю здесь решение, чтобы не потерялось.

Нужно скопировать из корневого /etc в сhroot-овый etc файлы host.conf,
hosts, localtime, resolv.conf, nsswitch.conf (по идеи только его
должно хватить, но не уверен). Также cp -a /lib/libnss_
{dns,files,compat}* /chroot/lib/ и рестарт php-fpm, чтобы glibc
подхватил нужные либы

[code]$ export CHROOT_FPM=/var/www;
$ echo $CHROOT_FPM;[/code]

симлинки [code]ln -s /etc/host.conf $CHROOT_FPM/host.conf;
ln -s /etc/hosts $CHROOT_FPM/hosts;
ln -s /etc/localtime $CHROOT_FPM/localtime;
ln -s /etc/resolv.conf $CHROOT_FPM/resolv.conf;
ln -s /etc/nsswitch.conf $CHROOT_FPM/nsswitch.conf;[/code]

симлинки на дополнительно библиотеки MySQL например [code]ln -s /lib/
lib
mkdir -p tmp
sn -f /tmp/mysql.sock tmp/mysql.sock[/code]
PandoraBox2007
Re: chroot + php-fpm
January 23, 2010 01:40PM
на примере NgINX :)

[CODE] location ~ \.php$ {
.................
root /var/www/rambler_ru;
........
fastcgi_param DOCUMENT_ROOT /rambler_ru;
fastcgi_param SCRIPT_FILENAME /rambler_ru
$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /rambler_ru
$fastcgi_script_name;

include fastcgi_params;
[/CODE]

в fastcgi_params коментируем [CODE]#fastcgi_param DOCUMENT_ROOT
$document_root;[/CODE]
PandoraBox2007
Re: chroot + php-fpm
January 23, 2010 01:40PM
nginx не умеет и не будет уметь запускать отдельные локейшены от
разных пользователей, посему от файлового способа передачи запроса
придется отказаться или приминить патч

[CODE]~/nginx-0.6.31/src$ grep -R request_body_file_group_access *
http/ngx_http_request.h: unsigned
request_body_file_group_access:1;
http/modules/ngx_http_dav_module.c: r-
>request_body_file_group_access = 1;

http/ngx_http_request_body.c: if (r-
>request_body_file_group_access) {

http/ngx_http_request_body.c: if (r-

>request_body_file_group_access) {

http/ngx_http_request_body.c, ngx_int_t
ngx_http_read_client_request_body:

if (r->request_body_file_group_access) {
tf->access = 0660;
}[/CODE]
alekciy
Re: chroot + php-fpm
February 26, 2010 05:06PM
Вообще то вопрос уже поднимался
http://groups.google.ru/group/highload-php-ru/browse_thread/thread/de1e21c9ea86c590/f40ead396434cb1e?hl=ru&lnk=gst&q=chroot#f40ead396434cb1e
и такую кучу файлов копировать не обязательно. Достаточно
nsswitch.conf, resolv.conf и libnss_dns.so

А зачем nginx запуск отдельных локейшенов под разными пользователями?
Не нужно пытаться делать из него Apache. php-fpm в связке с nginx
прекрасно справляется с задачей разграничения прав.

On 23 янв, 20:43, PandoraBox2007 <pandorabox2...@gmail.com> wrote:
> nginx не умеет и не будет  уметь запускать отдельные локейшены от
> разных пользователей, посему от файлового способа передачи запроса
> придется отказаться или приминить патч
>
> [CODE]~/nginx-0.6.31/src$ grep -R request_body_file_group_access *
> http/ngx_http_request.h:    unsigned
> request_body_file_group_access:1;
> http/modules/ngx_http_dav_module.c:        r-
>
> >request_body_file_group_access = 1;
>
> http/ngx_http_request_body.c:            if (r-
>
> >request_body_file_group_access) {
>
> http/ngx_http_request_body.c:        if (r-
>
> >request_body_file_group_access) {
>
> http/ngx_http_request_body.c, ngx_int_t
> ngx_http_read_client_request_body:
>
>             if (r->request_body_file_group_access) {
>                 tf->access = 0660;
>             }[/CODE]
Анатолий Митрофанов
Re: chroot + php-fpm
February 27, 2010 03:16AM
> А зачем nginx запуск отдельных локейшенов под разными пользователями?
> Не нужно пытаться делать из него Apache. php-fpm в связке с nginx
> прекрасно справляется с задачей разграничения прав.

Либо я чего-то недопонимаю, либо с симлинками загруженными через фтп
nginx-таки не справляется. про ssh вообще молчу.


С уважением, Анатолий Митрофанов.
Aleksej Besciokov
Re: chroot + php-fpm
February 27, 2010 04:48AM
2010/2/27 Анатолий Митрофанов <anatoliy@nable.ru>:
> Либо я чего-то недопонимаю, либо с симлинками загруженными через фтп
> nginx-таки не справляется. про ssh вообще молчу.


в смысле не справляется ?
как бэ всё с ними хорошо


--
Aleksej Besciokov
EMail/JID: proforg@maloletka.ru
phone: +7 495 7853149
alekciy
Re: chroot + php-fpm
February 27, 2010 07:54AM
Может я чего то не понимаю, но причем тут ssh и nginx? nginx прекрасно
раздает статику и как то специально его ограничивать смысла нет,
достаточно правильно настроить конфиги. А вот php активно на сервере
работает, его ограничивать уже стоит. Но к nginx это отношения уже не
имеет...

On 27 фев, 10:15, Анатолий Митрофанов <anato...@nable.ru> wrote:
> > А зачем nginx запуск отдельных локейшенов под разными пользователями?
> > Не нужно пытаться делать из него Apache. php-fpm в связке с nginx
> > прекрасно справляется с задачей разграничения прав.
>
> Либо я чего-то недопонимаю, либо с симлинками загруженными через фтп
> nginx-таки не справляется. про ssh вообще молчу.
>
> С уважением, Анатолий Митрофанов.
Анатолий Митрофанов
Re: chroot + php-fpm
February 27, 2010 12:26PM
> 2010/2/27 Анатолий Митрофанов <anatoliy@nable.ru>:
>> Либо я чего-то недопонимаю, либо с симлинками загруженными через фтп
>> nginx-таки не справляется. про ssh вообще молчу.
>
>
> в смысле не справляется ?
> как бэ всё с ними хорошо

в смысле симлинк может быть создан на реальный файл другого пользователя
на виртуальном хостинге, после чего в браузере благополучно прочитан.

> --
> Aleksej Besciokov
> EMail/JID: proforg@maloletka.ru
> phone: +7 495 7853149
>

С уважением, Анатолий Митрофанов.
Aleksej Besciokov
Re: chroot + php-fpm
February 27, 2010 11:04PM
2010/2/27 Анатолий Митрофанов <anatoliy@nable.ru>:
>> 2010/2/27 Анатолий Митрофанов <anatoliy@nable.ru>:
>>> Либо я чего-то недопонимаю, либо с симлинками загруженными через фтп
>>> nginx-таки не справляется. про ssh вообще молчу.
>>
>> в смысле не справляется ?
>> как бэ всё с ними хорошо
>
> в смысле симлинк может быть создан на реальный файл другого пользователя
> на виртуальном хостинге, после чего в браузере благополучно прочитан.

давным давно
есть патч
который делает realpath и проверяет внутри ли он докрута
в основной ветке его никогда не будет
так как это негативно сказывается на производительности

в общем случае это не вызывает проблем даже на виртуальном хостинге -
по ftp симлинку не зальёшь, а php в chroot.

--
Aleksej Besciokov
EMail/JID: proforg@maloletka.ru
phone: +7 495 7853149
Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 204
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready