В процессе тыкания палочкой клеток (jails) приходит момент, когда служебные операции надоедают. TheBrig - очень красивая и удобная штука. Но пока нажмёшь все галочки - забудешь что хотел. (Утрирую, конечно). В то же время в комплекте с Finch chroot устанавливается неплохой пакет для
работы с клетками по-быстрому - qjail от quick(англ) - быстрый. Необходимые приготовления уже были проведены при установке Finch. Сразу скажу, что в одной систему клетки, созданные через TheBrig и через qjail мирно сосуществуют. Только IP адреса надо давать каждой клетке уникальные.
Клетка создаётся буквально в одну команду.
nas4free ~/ root~$ qjail create -4 "192.168.1.50,lo0|127.0.0.50" test
finch: chrooting to "/mnt/Pool/Ext/Finch" for this 1 command only.
Successfully created test
Здесь create - создать, ключ -4 задаёт список IP-4 адресов для создаваемой клетки (второй из них -
loopback), а test - имя клетки
Теперь клетку запускаем и проверяем результат
nas4free ~/ root~$ qjail start test
finch: chrooting to "/mnt/Pool/Ext/Finch" for this 1 command only.
Jail successfully started test
nas4free ~/ root~$ jls
JID IP Address Hostname Path
1 192.168.1.55 owncloud /mnt/Pool/Ext/Finch/usr/jails/owncloud
2 192.168.1.54 tm /mnt/Pool/Ext/Finch/usr/jails/tm
4 192.168.1.50 test /mnt/Pool/Ext/Finch/usr/jails/test
Бинго!
При рестарте системы все созданные клетки стартуют автоматически
Созданную клетку можно модифицировать,
полный man - здесь. (К сожалению, ман
здесь страдает неполнотой). Перед модификацией клетку надо остановить.
Давайте для примера разрешим использования UNIX сокетов
nas4free ~/ root~$ jexec 4 ping 192.168.1.1
ping: socket: Operation not permitted
nas4free ~/ root~$ qjail stop test
finch: chrooting to "/mnt/Pool/Ext/Finch" for this 1 command only.
Jail successfully stopped test
nas4free ~/ root~$ qjail config -k test
finch: chrooting to "/mnt/Pool/Ext/Finch" for this 1 command only.
Successful enabled allow.raw_sockets for test
nas4free ~/ root~$ qjail start test
finch: chrooting to "/mnt/Pool/Ext/Finch" for this 1 command only.
Jail successfully started test
nas4free ~/ root~$ jexec 5 ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=0.419 ms
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.211 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.226 ms
^C
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.211/0.285/0.419/0.095
Но обычно параметры по умолчанию подходят.
Ну и давайте убьём нашу тестовую клетку.
nas4free ~/ root~$ qjail stop test
finch: chrooting to "/mnt/Pool/Ext/Finch" for this 1 command only.
Jail successfully stopped test
nas4free ~/ root~$ qjail delete test
finch: chrooting to "/mnt/Pool/Ext/Finch" for this 1 command only.
Successfully deleted test
nas4free ~/ root~$ qjail list
finch: chrooting to "/mnt/Pool/Ext/Finch" for this 1 command only.
STA JID NIC IP Jailname
--- ---- --- --------------- --------------------------------------------------
DR 1 re0 192.168.1.55 owncloud
lo0|127.0.0.55
DR 2 re0 192.168.1.54 tm
lo0|127.0.0.54
Прим. Видно, что команды можно вводить непосредственно из хост системы. Finch настроен так, чтобы автоматом передавать их в chroot. Но если команд вводить много - можно сначала войти в chroot, а потом выйти
nas4free ~/ root~$ finch chroot
finch: chrooting to "/mnt/Pool/Ext/Finch".
nas4free // root^> qjail list
STA JID NIC IP Jailname
--- ---- --- --------------- --------------------------------------------------
DR 1 re0 192.168.1.55 owncloud
lo0|127.0.0.55
DR 2 re0 192.168.1.54 tm
lo0|127.0.0.54
nas4free // root^> exit
logout
nas4free ~/ root~$
Краткий справочник по qjail в finch от разработчика finch -
здесь.
PS Нашёл два даже не недостатка - незначительных ограничения.
1) ezjail умеет пари необходимости сам создавать zfs датасет под клетку и пр. qjail - нет, при желании - милости просим руками.
2) qjail не умеет создавать VIMAGE клетки. Во всяком случае при применении адресов вида 192.168.х.х TheBrig текущей версии alkatraz - судя по всему умеет (но я сам не тестил)
PPS Входить внутрь работающей клетки советую запуском в ней командного интерпретатора, посмотрев номер клетки по jls или qjail lest. Например
nas4free ~/ root~$ jls
JID IP Address Hostname Path
1 192.168.1.55 owncloud /mnt/Pool/Ext/Finch/usr/jails/owncloud
2 192.168.1.54 tm /mnt/Pool/Ext/Finch/usr/jails/tm
nas4free ~/ root~$ jexec 1 tcsh
owncloud / >
>
Вариант входа в клетку qjail console "$jailname" рабочий, но имеет проблемы с кириллицей.