2020-10 upd: we reached the first fundraising goal and rented a server in Hetzner for development! Thank you for donating !
Внимание! Данные страницы описывают CBSD версии 13.0.x. Если вы используете более раннюю версию, рекомендуется сначала обновиться.
Другие методы создание jail
Команда jcreate, часть 2
% cbsd jconstruct
% cbsd jcreate jconf=/path/to/conf.jconf
Если DIALOG-based скрипт jconstruct-tui по каким-то причинам не подошел, для конфигурации новой клетки можно воспользоваться скриптом-диалогом вида "вопрос-ответ" jconstruct:
% cbsd jconstruct
Который задает те же вопросы, что и tui-версия.
Также, можно обойтись формированием конфигураций без вспомогательных интерактивных утилит, например для создания систем, автоматически создающих необходимые клетки.
Пример стандартной конфигурации для jcreate может выглядеть так:
jname="jail1"; path="/usr/jails/jails/jail1"; host_hostname="jail1.my.domain"; ip4_addr="10.0.0.24/24"; mount_devfs="1"; allow_mount="1"; allow_devfs="0"; allow_nullfs="0"; mount_fstab="/usr/jails/jails-fstab/fstab.jail1"; arch="amd64"; mkhostsfile="1"; devfs_ruleset="4"; ver="10.0"; basename=""; slavenode="0"; baserw="0"; basename=""; mount_src="0"; mount_obj=""; mount_kernel="0"; mount_ports="1"; astart="1"; data="/usr/jails/jails-data/jail1-data"; vnet="0"; applytpl="1"; mdsize="0"; rcconf="/usr/jails/jails-rcconf/rc.conf_jail1"; floatresolv="1"; exec_start="/bin/sh /etc/rc"; exec_stop="/bin/sh /etc/rc.shutdown"; exec_poststart="0"; exec_poststop="0"; exec_prestart="0"; exec_prestop="0"; exec_master_poststart="0"; exec_master_poststop="0"; exec_master_prestart="0"; exec_master_prestop="0"; interface="auto"; jailskeldir="${sharedir}/jail-skel"
Обратите внимание на параметры arch и ver. Значения в них могут быть "i386", "amd64" для архитектуры и "9.2", "10.0", "10.1" "11" и тд , в зависимости от той версии базы, которую вы предпочтете для клеток. Значение native в этих параметрах заставляет CBSD брать всегда ту версию и архитектуру, на которой запущена нода, что делает версию плавающей. Так, если вы используйте темплейт с arch="native", ver="native" и перейдете с FreeBSD 10.2 на 11.0, то будет использоваться база 11.0. Если вы хотите зафиксировать конкретную версию - указывайте версию вместо native.
Если вы хотите, чтобы при создании клетки также устанавливался какие-то пакеты из pkg репозитория, в этой конфигурации должен присутствовать параметр pkglist указывающий на файл со списком пакетов, например:
pkglist="/tmp/newjail.txt";
Файл /tmp/newjail.txt может выглядеть так:
mc lynx nginx-devel lsof
cbsd jcreate удаляет файл, указанный в pkglist после создания клетки
Внимание!
При создании новой клетки или получения ее из репозитория, возьмите за правило ВСЕГДА перебивать пароль пользователя root в клетке, даже если не планируете запускать в ней ssh/ftp/rsh и тому подобные сервисы.
Если клетка создается с applytpl=0, то по-умолчанию файлы /etc/{passwd,master.passwd,group} в клетке соответствуют оригинальным "чистым" файлам FreeBSD, те, пароль root пуст. При applytpl=1 а также при построении клеток для репозитория используется темплейт из $workdir/share/jail-skel, в котором хеш рута соответствует паролю CBSD в инсталляции CBSD по-умолчанию. Вы можете изменить стандартный пароль рута для создаваемых новых клеток, изменив хэш в skel-файле master.passwd через команду:
% vipw -d ${workdir}/share/jail-skel/etc
либо, указывать альтернативный путь в jail-skel каталогу в .jconf (утилита jcreate) конфиге.
По-умолчанию, каталог указанный в jailskeldir будет использован как источник файлов, которые будут добавлены (или ими будут перезаписаны стандартные файлы) в клетку автоматически, при applytpl=1.
Соответственно, вы можете создавать любые шаблоны конфигураций и содержимое окружений, которые будут копироваться при создании новой клетки.