Как правильно настроить chroot?

122 просмотра
Перейти к первому непрочитанному сообщению

alekciy

не прочитано,
15 июл. 2009 г., 21:53:1815.07.2009
– highload-php-ru
Есть ли у кого либо работающий пример конфига с включеной chroot
директивой? Настроил конфиг, с незаданной chroot все работает, стоит
только прописать chroot так сразу падает с ошибкой:

Warning: Unknown: Filename cannot be empty in Unknown on line 0 Fatal
error: Unknown: Failed opening required '' (include_path='.') in
Unknown on line 0

Видимо интерпретатор что-то не может заиклюдить. Что не понятно.
Кстати может кто в курсе, должен ли сам php-cgi находиться внутри
chroot-а?

alekciy

не прочитано,
19 июл. 2009 г., 14:24:1619.07.2009
– highload-php-ru
Неужели директиву chroot вообще ни кто не использует? Скиньте хотя бы
пример с рабочего конфига, а?

Alexander V. Khokhlov

не прочитано,
20 июл. 2009 г., 04:27:1520.07.2009
– highloa...@googlegroups.com
http://wdev.tk/article/18.html

2009/7/19 alekciy <alekc...@gmail.com>

Неужели директиву chroot вообще ни кто не использует? Скиньте хотя бы
пример с рабочего конфига, а?



--

Yours sincerely
Alexander V. Khokhlov

alekciy

не прочитано,
20 июл. 2009 г., 18:44:4120.07.2009
– highload-php-ru
Ах, блин, как же я сам не догадался то... Спасибо, оно самое.

On 20 июл, 12:27, "Alexander V. Khokhlov" <alex.so...@gmail.com>
wrote:
> http://wdev.tk/article/18.html
>
> 2009/7/19 alekciy <alekciy...@gmail.com>

Alexander V. Khokhlov

не прочитано,
21 июл. 2009 г., 06:07:5121.07.2009
– highloa...@googlegroups.com


2009/7/20 alekciy <alekc...@gmail.com>

Ах, блин, как же я сам не догадался то... Спасибо, оно самое.

You are welcome. Подписывайтесь на RSS. Будет много интересного.

Sergej Kandyla

не прочитано,
21 июл. 2009 г., 06:16:1021.07.2009
– highloa...@googlegroups.com
Alexander V. Khokhlov пишет:
>
>
> 2009/7/20 alekciy <alekc...@gmail.com <mailto:alekc...@gmail.com>>

>
> Ах, блин, как же я сам не догадался то... Спасибо, оно самое.
>
>
> You are welcome. Подписывайтесь на RSS. Будет много интересного.
> --

Статья познавательная.
Но стратегически много ручных действий. Да и chroot как бы изначально не
был ориентирован на безопасность.

С точки зрения безопасности, надежности и разделения задачь было бы
правильне (в случаее FreeBSD) использовать jail (ezjail). Имхо.


--
Best wishes, Sergej Kandyla
Всегда улыбайтесь жизни и жизнь всегда улыбнется вам!

Alexander V. Khokhlov

не прочитано,
21 июл. 2009 г., 06:26:0921.07.2009
– highloa...@googlegroups.com
2009/7/21 Sergej Kandyla <sk....@gmail.com>


Статья познавательная.
Но стратегически много ручных действий. Да и chroot как бы изначально не был ориентирован на безопасность.

С точки зрения безопасности, надежности и разделения задачь было бы правильне (в случаее FreeBSD) использовать jail  (ezjail). Имхо.

Согласен, chroot -- это полумера. Просто вопрос стоял быстро развернуть простую песочницу. 

Про концепцию jail знаю, но как-то поленился :) Показалось что придется много возится с настройкой и запуском. Спасибо за наводку на ezjail, про эту софтину не слышал. Попробую на досуге.

alekciy

не прочитано,
21 июл. 2009 г., 07:30:5921.07.2009
– highload-php-ru
О jail знаю, тем паче в 7-ой ветки фряхи на сколько я помню его очень
даже хорошо доработали. Но в данном случае говорим о Debian, да и
кроме того тут сразу имеем втроенную директиву в сам php-fpm, т.е. все
то нужно для развертывания так это задать директиву, кроме того это не
для банковского сервера, просто есть ряд простых страничек и chroot
обеспечить чуть более высокий уровень безопасности чем сейчас есть.

On 21 июл, 14:16, Sergej Kandyla <sk.p...@gmail.com> wrote:
> Alexander V. Khokhlov пишет:

alekciy

не прочитано,
23 июл. 2009 г., 13:43:2623.07.2009
– highload-php-ru
А для MySQLi расширения какие либы копировал? Сокет то внутрь chroot я
слинковал, ошибок соединения с сервером нет, но скрипт не работает.
Для проверки использовал скрипт из мана:

<?php
ini_set('display_errors', 'On');
$mysqli = new mysqli("localhost", "root", "pass");

/* Проверка подключения */
if (mysqli_connect_errno()) {
printf("Ошибка подключения: %s\n", mysqli_connect_error());
exit();
}

printf("Информация о хосте: %s\n", $mysqli->host_info);

/* Закрытие соединения */
$mysqli->close();
?>

Пока сокет был настроен не правильно я получал "PHP Warning:
mysqli::mysqli(): (HY000/2002): Can't connect to local MySQL server
through socket" в логе, все вроде поправил, теперь скрипт выдает
"Информация о хосте:" и все, пусто. Т.е. вроде и соединились, только
ни чего не работает все равно. И библиотеки внутрь chroot вроде
скопировал:

# ls usr/lib
total 2.2M
dr--r--r-- 2 www www 12K 2009-07-23 03:05 gconv/
-rw-r--r-- 1 www www 146K 2009-07-23 20:57 libm.so
-rw-r--r-- 1 www www 2.0M 2009-07-23 20:47 libmysqlclient.so
-rw-r--r-- 1 www www 80K 2009-07-23 20:59 libz.so

но не пашет... Не туда/не то копировал?

On 20 июл, 12:27, "Alexander V. Khokhlov" <alex.so...@gmail.com>
wrote:
> http://wdev.tk/article/18.html
>
> 2009/7/19 alekciy <alekciy...@gmail.com>
>

Alex Vorona

не прочитано,
23 июл. 2009 г., 13:57:0323.07.2009
– highloa...@googlegroups.com
strace в таких случаях помогает хорошо

Konstantin Belov

не прочитано,
23 июл. 2009 г., 14:29:3923.07.2009
– highloa...@googlegroups.com
alekciy wrote:
> А для MySQLi расширения какие либы копировал? Сокет то внутрь chroot я
> слинковал, ошибок соединения с сервером нет, но скрипт не работает.
> Для проверки использовал скрипт из мана:
>
>
/bin/ln -f /var/db/mysql/mysql.sock /var/home/user/tmp

в /tmp/ появится mysql.sock

Никакие библиотек не копировал, потому что не нужно!

линковать нужно после каждого запуска MySQL

Борис Долгов

не прочитано,
23 июл. 2009 г., 19:09:0223.07.2009
– highloa...@googlegroups.com
А если делать симлинк?

23 июля 2009 г. 22:29 пользователь Konstantin Belov
(belo...@gmail.com) написал:

--
С уважением, Борис Долгов.
icq 77556665
e-mail bo...@dolgov.name

alekciy

не прочитано,
23 июл. 2009 г., 19:18:5123.07.2009
– highload-php-ru
Я делал strace для iconv и там разобраться получилось. Однако strace
mysql вываливает слишком много данных в консоль, да и перенаправление
в файл не выполняет. Файл с strace-ом создается, но пустой.

alekciy

не прочитано,
23 июл. 2009 г., 19:22:3223.07.2009
– highload-php-ru
Линковал. В папке tmp которая лежит внутри chroot файл сокета
mysqld.sock появился. PHP не пишет, что не может связаться. Соединение
проходит типа успешно, но ни какие запросы не отрабытывают. Попробую
конечно сейчас ребутнутся и все проделать по новой.

alekciy

не прочитано,
23 июл. 2009 г., 19:25:0323.07.2009
– highload-php-ru
Делать симлинк внутри chroot на файл вне chroot-а? Так симлинке же так
не работают...

On 24 июл, 03:09, Борис Долгов <bo...@dolgov.name> wrote:
> А если делать симлинк?

Alex Vorona

не прочитано,
24 июл. 2009 г., 01:11:2224.07.2009
– highloa...@googlegroups.com
24.07.2009 02:18, alekciy wrote:
> Я делал strace для iconv и там разобраться получилось. Однако strace
> mysql вываливает слишком много данных в консоль, да и перенаправление
> в файл не выполняет. Файл с strace-ом создается, но пустой.
>
>
strace -o не работает?

Alexey V. Karagodov

не прочитано,
24 июл. 2009 г., 02:24:3924.07.2009
– highloa...@googlegroups.com

On 24.07.2009, at 3:25, alekciy wrote:

> Делать симлинк внутри chroot на файл вне chroot-а? Так симлинке же так
> не работают...
>
> On 24 июл, 03:09, Борис Долгов <bo...@dolgov.name> wrote:
>> А если делать симлинк?

mount -t null

alekciy

не прочитано,
14 авг. 2009 г., 18:07:4014.08.2009
– highload-php-ru
Так, со всем предыдущим разобрался, но возникла неодижанная подстава.
Возникает ошибка:

Warning: file_get_contents(): php_network_getaddresses: getaddrinfo
failed: Name or service not known in /test.php on line 3 Warning:
file_get_contents(http://www.yandex.ru/): failed to open stream:
php_network_getaddresses: getaddrinfo failed: Name or service not
known in /test.php on line 3

Расследование показало, что дело в том, что PHP не может резолвить
имена (если задавать IP адрес сервера, то все пашет). Скопировал из
etc файлы:

debian:~# ls
-rw-r--r-- 1 root root 9 2009-08-15 01:38 host.conf
-rw-r--r-- 1 root root 263 2009-08-15 01:41 hosts
-rw-r--r-- 1 root root 2.2K 2009-08-15 01:39 localtime
-rw-r--r-- 1 root root 475 2009-08-15 01:40 nsswitch.conf
-rw-r--r-- 1 root root 46 2009-08-15 01:16 resolv.conf

Но ошибка возникает все равно. Как я понимаю, что резолвинга системе
мало знать NS из resolv.conf, нужны еще какие то библиотеки, но какие?

P.S. Интересно, хоть кто нибудь кроме меня chroot использует о_О ?

Really Big Bug

не прочитано,
17 авг. 2009 г., 02:21:3917.08.2009
– highloa...@googlegroups.com
nsswitch.conf то скопирован, а нужные nss модули? в данном случае
libnss_dns, libnss_files, libnss_compat. Чтото типа cp -a
/lib/libnss_{dns,files,compat}* /chroot/lib/

alekciy

не прочитано,
17 авг. 2009 г., 18:36:5817.08.2009
– highload-php-ru
Да, спасибо. В итоге я разобрался и все именно так. Нужен был
libnss_dns.so.2 поскольку в nsswitch.conf у меня hosts: dns, ну и
после перезапустить php-fpm, т.к. оказалось, что он эти изменения
подхватывает только при полном рестарте, а я его не всегда делал.

А strace видимо от того ни чем и не помог, что при старте php-fpm
видимо требуемых либок не нашел и даже не пытался делать вызов при
запуске скрипта.

Andrei Nigmatulin

не прочитано,
17 авг. 2009 г., 18:47:2317.08.2009
– highloa...@googlegroups.com
On Tuesday 18 August 2009 02:36, alekciy wrote:
> Да, спасибо. В итоге я разобрался и все именно так. Нужен был
> libnss_dns.so.2 поскольку в nsswitch.conf у меня hosts: dns, ну и
> после перезапустить php-fpm, т.к. оказалось, что он эти изменения
> подхватывает только при полном рестарте, а я его не всегда делал.
>
> А strace видимо от того ни чем и не помог, что при старте php-fpm
> видимо требуемых либок не нашел и даже не пытался делать вызов при
> запуске скрипта.

Не php-fpm а glibc.


--
Andrei Nigmatulin
GPG PUB KEY 6449830D

Now I lay me down to sleep(3)
Pray the OS my core to keep
If I die before I wake
Pray the Disk my core to take

Ответить всем
Отправить сообщение автору
Переслать
0 новых сообщений