====== Технология jail ====== * [[http://ru.wikipedia.org/wiki/FreeBSD_Jail|FreeBSD Jail]] * [[http://www.freebsd.org/doc/handbook/jails-build.html|Creating and Controlling Jails]] * [[http://www.unixfaq.ru/index.pl?req=qs&id=1002|Управление переменными ядра в Jail]] ===== Создание копии системы ===== ==== С использованием дистрибутива ==== # mount_cd9660 /dev/cd0 /mnt # setenv D /var/jail/www # mkdir -p $D # tar -xvf /mnt/usr/freebsd-dist/base.txz -C $D ==== С использованием компиляции и установки "мира" системы ==== === Подготовка исходных текстов === * [[Обновление системы и базового ПО в FreeBSD#Установка исходных текстов]] * [[Обновление системы и базового ПО в FreeBSD#Установка заплаток внутри релиза]] === Сборка "мира" (несколько часов) === [server:~] # cd /usr/src [server:~] # make buildworld === Установка копии "мира" (5-7 минут) === [server:~] # cd /usr/src [server:~] # setenv D /var/jail/www [server:~] # mkdir -p $D [server:~] # make installworld DESTDIR=$D [server:~] # make distribution DESTDIR=$D ===== Совместное использование дерева портов ===== [server:~] # mount_nullfs /usr/ports/ /var/jail/www/usr/ports ===== Запуск jail ===== ==== FreeBSD10.X ==== * [[http://therub.org/2014/08/11/convert-freebsd-jails-from-rc.conf-to-jail.conf/|Convert FreeBSD 10 Jails from rc.conf to jail.conf]] [server:~] # cat /etc/rc.conf ... jail_enable="YES" jail_list="www" [server:~] # cat /etc/jail.conf allow.raw_sockets = 1; exec.clean; exec.system_user = "root"; exec.jail_user = "root"; exec.start = "/bin/sh /etc/rc"; exec.stop = "/bin/sh /etc/rc.shutdown"; mount.devfs; allow.set_hostname = 0; allow.sysvipc = 0; www { host.hostname = "www.corpX.un"; path = "/var/jail/www"; interface = "em0"; ip4.addr = "192.168.X.20"; exec.consolelog = "/var/log/jail_www_console.log"; } [server:~] # service jail start www ===== Просмотр и подключение к jail ===== [server:~] # jls [server:~] # jexec N csh www# sysctl security.jail.jailed ===== Настройка jail ===== www# hostname www# cat /etc/rc.conf sshd_enable=yes www# cat /etc/resolv.conf domain corpX.un nameserver 172.16.1.254 www# cat /etc/hosts 127.0.0.1 localhost localhost.corpX.un 192.168.X.20 www.corpX.un www 172.16.1.249 rep