Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
freebsd:dev [2011/01/21 13:40] linko22@gmail.com |
freebsd:dev [2011/01/24 14:59] (текущий) linko22@gmail.com |
||
|---|---|---|---|
| Строка 12: | Строка 12: | ||
| Для упрощения, | Для упрощения, | ||
| - | ====== Настройка джейлов ====== | + | ====== Настройка |
| + | Добавляем необходимое нам количество IP адресов на активный интерфейс, | ||
| + | |||
| + | ifconfig em0 add alias 10.8.0.200/ | ||
| + | ifconfig em0 add alias 10.8.0.201/ | ||
| + | ifconfig em0 add alias 10.8.0.202/ | ||
| + | ifconfig em0 add alias 10.8.0.203/ | ||
| + | |||
| + | Записываем изменения в файле / | ||
| + | ifconfig_em0_alias0=" | ||
| + | ifconfig_em0_alias1=" | ||
| + | ifconfig_em0_alias2=" | ||
| + | ifconfig_em0_alias3=" | ||
| + | |||
| + | Замечу, | ||
| + | |||
| + | |||
| + | ====== Настройка работы с джейлами | ||
| Для настройки джейлов будем использовать свежеустановленный сервер с FreeBSD. Кто то использует vim или vi, кто то nano, мне удобно пользоваться встроенным редактором в mc. | Для настройки джейлов будем использовать свежеустановленный сервер с FreeBSD. Кто то использует vim или vi, кто то nano, мне удобно пользоваться встроенным редактором в mc. | ||
| + | |||
| + | Поставим порт управления джейлами | ||
| + | [root@dev /]# cd / | ||
| + | [root@dev /]# make install clean | ||
| + | |||
| + | Добавляем автозапуск джейла, | ||
| + | ezjail_enable=" | ||
| + | |||
| + | У меня на сервере самый большой размер имеет раздел /home. Поэтому, | ||
| + | [root@dev /]# cd / | ||
| + | [root@dev /]# cp ezjail.conf.sample ezjail.conf | ||
| + | |||
| + | В нем берем строку | ||
| + | ezjail_jaildir=/ | ||
| + | И приводим к виду | ||
| + | ezjail_jaildir=/ | ||
| + | Сохраняем файл и устанавливаем мир для джейлов, | ||
| + | [root@dev /]# ezjail-admin create | ||
| + | |||
| + | Он лезет в интернет и качает оттуда сборку FreeBSD под текущую систему. В принципе, | ||
| + | |||
| + | Вот, все поставилось, | ||
| + | |||
| + | Суть управляющего джейла в чем: каждый разработчик получает в свое пользование полноценную машину с рутовыми правами. Надо оно ему, или не надо, это уже зависит от конкретного разработчика. Соответственно, | ||
| + | Все это работает как. Согласно документации и тому как делаются джейлы посредством использования утилиты ezjail-admin, | ||
| + | |||
| + | Но мы пойдем немного дальше. В текущей статье, | ||
| + | |||
| + | ====== Установка первого джейла ====== | ||
| + | |||
| + | Рассмотрим очевидное решение, | ||
| + | |||
| + | Для начала создадим управляющий джейл. | ||
| + | [root@dev /]# ezjail-admin create hq.local 10.8.0.200 | ||
| + | |||
| + | Лежать он будет по пути / | ||
| + | Создаем каталог и сопутствующие подкаталоги | ||
| + | [root@dev /]# mkdir / | ||
| + | В нашем случае, | ||
| + | |||
| + | Все точки монтирования определяются файлами / | ||
| + | |||
| + | В нашем случае, | ||
| + | |||
| + | Его содержимое по умолчанию | ||
| + | |||
| + | / | ||
| + | |||
| + | Для нашего случая, | ||
| + | |||
| + | / | ||
| + | |||
| + | Т.е. для управляющего джейла мы его будем монтировать в режиме чтение-запись, | ||
| + | |||
| + | / | ||
| + | |||
| + | Так же, нам нужно будет работать с портами. Для этого удаляем симлинк с портами в джейле и делаем из него папку, что бы потом просто монтировать папку с портами в джейл. | ||
| + | |||
| + | [root@dev /]# rm / | ||
| + | |||
| + | Так же прописываем это в / | ||
| + | /usr/ports / | ||
| + | |||
| + | Запускаем непосредственно джейл | ||
| + | |||
| + | [root@dev /]# / | ||
| + | |||
| + | И смотрим в списках джейлов, | ||
| + | |||
| + | [root@dev /]# jls | ||
| + | | ||
| + | | ||
| + | |||
| + | Заходим в него | ||
| + | |||
| + | [root@dev /]# jexec 1 tcsh | ||
| + | hq# | ||
| + | |||
| + | Все, мы в джейле. | ||
| + | |||
| + | ====== Настройка управляющего джейла ====== | ||
| + | |||
| + | Для того, что бы все установленные порты могли использоваться другими джейлами надо создать несколько симлинков. | ||
| + | |||
| + | #hq cd /usr/local/ | ||
| + | #hq ln -s / | ||
| + | |||
| + | Т.е. фактически, | ||
| + | |||
| + | Для установки портов я использую локальную копию портов и его же локальный кеш distfiles, что бы не качать одни и те же порты, что уже и так есть у меня, когда я настраивал основную систему. Для этого надо подправить один файл, / | ||
| + | # | ||
| + | |||
| + | И, соответственно, | ||
| + | |||
| + | ====== Джейлы разработчиков ====== | ||
| + | |||
| + | Создаются по такому же принципу, | ||
| + | ====== Подводные камни ====== | ||
| + | |||
| + | Масса. | ||
| + | |||
| + | Во первых, | ||
| + | |||
| + | В каталоге / | ||
| + | |||
| + | #hq mkdir / | ||
| + | #hq touch / | ||
| + | #hq cd / | ||
| + | |||
| + | Далее. При установке какого нибудь дополнительного порта, необходимо в каждом джейле запускать / | ||
| + | |||
| + | Например, | ||
| + | |||
| + | #!/bin/csh | ||
| + | | ||
| + | jls | grep user | awk '{ system( "jexec " | ||
| + | |||
| + | То же самое относиться к апачу | ||
| + | |||
| + | #!/bin/csh | ||
| + | | ||
| + | jls | grep user | awk '{ system( "jexec " | ||
| + | Ну, и конечно, | ||
| ====== Настройка bind ====== | ====== Настройка bind ====== | ||