unionfs jail
unionfsを用いるjailの作り方。
俺はportsを試したり弄ったりする場合に使用してる。
特徴
- jail内でファイル変更が可能。
- ディスク使用量はthin jailより大きいが、fat jailより小さい。
- ホストの更新のみで、(不完全ではあるが)jailも更新される。
手順
exp.my.domain (192.168.0.102)を/home/jail/expに作る場合。
なお、以下の手順には書いてないが、/etc/rc.d/jail start expする前に$J/etc/以下の設定も行う。
set J = /home/jail/exp set N = /home/jail/null mkdir -p $J $N chmod -w $N chflags schg $N mkdir $J/{,bin,lib,libexec,sbin,usr} vi /etc/fstab mount $J/bin mount $J/lib mount $J/libexec mount $J/sbin mount $J/usr mount $J/usr/src mount $J/usr/obj mount $J/usr/ports cd /usr/src make -k hierarchy DESTDIR=$J cd /usr/src/etc make -k distribution DESTDIR=$J -DNO_MAKEDEV_RUN vi /etc/rc.conf /etc/rc.d/jail start exp jexec `jls | awk '/exp/{print $1}'` /bin/csh
設定例
必要に応じて設定する。
以下は俺の設定。
/etc/fstab
/bin /home/jail/exp/bin unionfs rw,below,noatime 0 0 /lib /home/jail/exp/lib unionfs rw,below,noatime 0 0 /libexec /home/jail/exp/libexec unionfs rw,below,noatime 0 0 /sbin /home/jail/exp/sbin unionfs rw,below,noatime 0 0 /usr /home/jail/exp/usr unionfs rw,below,noatime 0 0 /usr/ports /home/jail/exp/usr/ports unionfs rw,below,noatime 0 0 /home/jail/null /home/jail/exp/usr/src unionfs rw,below,noatime 0 0 /home/jail/null /home/jail/exp/usr/obj unionfs rw,below,noatime 0 0
/etc/rc.conf
jail_enable="YES" jail_list="exp" jail_exp_rootdir="/home/jail/exp" jail_exp_hostname="exp.my.domain" jail_exp_ip="192.168.0.102" jail_exp_interface="re0" jail_exp_devfs_enable="YES" jail_exp_devfs_ruleset="devfsrules_jail"
$J/etc/rc.conf
hostname="exp.my.domain" # Sendmail sendmail_enable="NO" sendmail_submit_enable="YES" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="YES" syslogd_flags="-ss" cron_flags="-J 60"
$J/etc/pw.conf
minuid 20000 maxuid 29999 mingid 20000 maxgid 29999
$J/etc/periodic.conf
daily_show_success="NO" daily_status_disks_enable="NO" daily_status_network_enable="NO" daily_status_security_chksetuid_enable="NO" daily_status_security_chkmounts_enable="NO" daily_status_security_chkuid0_enable="NO" daily_status_security_passwdless_enable="NO" daily_status_security_logincheck_enable="NO" daily_status_security_ipfwdenied_enable="NO" daily_status_security_ipfdenied_enable="NO" daily_status_security_pfdenied_enable="NO" daily_status_security_ipfwlimit_enable="NO" daily_status_security_ipf6denied_enable="NO" daily_status_security_kernelmsg_enable="NO" daily_status_security_loginfail_enable="NO" daily_status_security_tcpwrap_enable="NO" weekly_show_success="NO" weekly_locate_enable="NO" monthly_show_success="NO"
その他
以下のファイルも適宜変更する。
$J/etc/hosts $J/etc/resolv.conf $J/usr/local/etc/