トップ 新規 編集 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

ezjail

ezjail

インストール

ports

cd /usr/ports/sysutils/ezjail
make install clean

patch

--- ezjail-admin.orig        Sat Feb 11 02:06:27 2006
+++ /usr/local/bin/ezjail-admin Sun Feb 26 11:49:33 2006
@@ -212,15 +212,17 @@
 ######################## ezjail-admin UPDATE ########################
 setup|update)
   shift
-  args=`getopt ipPs: $*` || exerr "Usage: `basename -- $0` update [-s sourcetree] [-i] [-pP]"
+  args=`getopt ipPc:s: $*` || exerr "Usage: `basename -- $0` update [-s sourcetree] [-i] [-pP] [-c make.conf]"
     
   updatejail_installaction="world"
+  updatejail_makeconf="/etc/make.conf"
   updatejail_provideports=
   
   set -- ${args}
   for arg do
     case ${arg} in
       -i) updatejail_installaction="installworld"; shift;;
+      -c) updatejail_makeconf="$2"; shift 2;;
       -s) ezjail_sourcetree="$2"; shift 2;;
       -p) updatejail_provideports="YES"; shift;;
       -P) updatejail_provideports="YES"; updatejail_installaction="none"; shift;;
@@ -244,10 +246,10 @@
     # make our world
     cd ${ezjail_sourcetree}
-    make ${updatejail_installaction} DESTDIR=${ezjail_jailfull} || exerr "make ${updatejail_installaction} failed."
+    make __MAKE_CONF=${updatejail_makeconf} ${updatejail_installaction} DESTDIR=${ezjail_jailfull} || exerr "make ${updatejail_installaction} failed."

     # setup world
-    make distribution DESTDIR=${ezjail_jailfull} || exerr "make distribution failed."
+    make distribution __MAKE_CONF=${updatejail_makeconf} ${updatejail_installaction} DESTDIR=${ezjail_jailfull} || exerr "make ${updatejail_installaction} failed."DESTDIR=${ezjail_jailfull} || exerr "make distribution failed."

     # Fill basejail from installed world
     cd ${ezjail_jailfull}
                                                    

buildworld

/etc/make.conf.jailでjailに不要なビルドオプションを指定しておく

NO_ACPI=yes
NO_ATM=yes
NO_AUTHPF=yes
NO_BLUETOOTH=yes
NO_BOOT=yes
NO_FORTRAN=yes
NO_GAMES=yes
NO_GDB=yes
NO_GPIB=yes
NO_I4B=yes
NO_INET6=yes
NO_INFO=yes
NO_IPFILTER=yes
NO_LIBC_R=yes
NO_LIBPTHREAD=yes
NO_LIBTHR=yes
NO_LPR=yes
NO_KERBEROS=yes
NO_MODULES=yes
NO_NETCAT=yes
NO_NIS=yes
NO_OPENSSH=yes
NO_OPENSSL=yes
NO_PF=yes
NO_PROFILE=yes
NO_RCMDS=yes
NO_USB=yes
NO_BIND=yes
NO_BIND_DNSSEC=yes
NO_BIND_ETC=yes
NO_BIND_LIBS_LWRES=yes
NO_BIND_MTREE=yes
NO_BIND_NAMED=yes
NO_BIND_UTILS=yes

あらかじめ

cd /usr/src
make __MAKE_CONF=/etc/make.conf.jail buildworld

しておく。

ezjail.conf

cd /usr/local/etc
cp ezjail.conf.sample ezjail.conf

でコピーする。ezjail_jaildirなどは任意に設定する。(個人的に/usrと/usr/localを分けているので、ezjail_jaildir=/usr/local/jailsに設定している)

portsツリーの更新用AnonymousCVSの設定をする

/usr/local/etc/ezjail.confのezjail_portscvsrootをjpに設定する。

ezjail_portscvsroot=":pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs"

anoncvsにログインしておく

setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs
cvs login
(パスワードとしてanoncvsを入力)

/root/.cvspassに以下のような内容が出来る。(最初からこのファイルを作成するのでもいいかな)

/1 :pserver:anoncvs@anoncvs.jp.freebsd.org:2401/home/ncvs Ay=0=h<Z

ezjailの導入

ezjail-admin update -i

する。basejailにinstallworldされる。

jailに不要なファイルの削除

N. NielsenのリストFiles to Remove from Jailsのリストを使用する。(/usr/jails/はezjail.confで設定したディレクトリに変えること)

fetch http://memberwebs.com/nielsen/freebsd/jails/docs/jail_remove_5.x.txt
sed "s#^/#/usr/jails/newjail/#" < jail_remove_5.x.txt | xargs rm -rfv
sed "s#^/#/usr/jails/basejail/#" < jail_remove_5.x.txt | xargs rm -rfv

default flavourの設定

flavour/default/etc/periodic.conf

daily_status_disks_enable="NO"
daily_status_network_enable="NO"
daily_status_security_noamd="YES"
daily_status_security_chkmounts_enable="NO"
daily_status_security_ipfdenied_enable="NO"
daily_status_security_ipfwdenied_enable="NO"
daily_status_security_ipfwlimit_enable="NO"
daily_status_security_ip6fwdenied_enable="NO"
daily_status_security_ip6fwlimit_enable="NO"

flavour/default/etc/rc.conf

network_interfaces=""
rpcbind_enable="NO"
sendmail_enable="NO"
sendmail_submit_enable="YES"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="YES"
sshd_enable="NO"
sshd_flags="-4"
syslogd_flags="-ss"
tcp_keepalive="NO"
tcp_extensions="NO"
cron_flags="-J 15"

/etc/fstab /etc/wall_cmos_clock /etc/localtime

cd /usr/jails
touch flavours/default/etc/fstab
touch flavours/default/etc/wall_cmos_clock
cp -p /usr/share/zoneinfo/Asia/Tokyo flavours/default/etc/localtime

/etc/resolv.conf

cd /usr/jails
grep nameserver /etc/resolv.conf > flavours/default/etc/resolv.conf

basejailの整備

/sbin/initのエラーを回避するためにtrueにハードリンクする

cd /usr/jails/basejail
ln usr/bin/true sbin/init

flavourの設定をするシェルスクリプト

#!/bin/sh
[ -f ${ezjail_etc}/ezjail.conf ] && . ${ezjail_etc}/ezjail.conf                 
ezjail_jaildir=${ezjail_jaildir:-"/usr/jails"}
ezjail_jailtemplate=${ezjail_jailtemplate:-"${ezjail_jaildir}/newjail"}      
ezjail_jailbase=${ezjail_jailbase:-"${ezjail_jaildir}/basejail"}
ezjail_jailfull=${ezjail_jailfull:-"${ezjail_jaildir}/fulljail"}             
ezjail_flavours=${ezjail_flavours:-"${ezjail_jaildir}/flavours"}

# remove files
[ ! -e jail_remove_5.x.txt ] && fetch http://memberwebs.com/nielsen/freebsd/jails/docs/jail_remove_5.x.txt
sed -e "s#^/#${ezjail_jailtemplate}/#" < jail_remove_5.x.txt | xargs rm -rfv
sed -e 's#^/#${ezjail_jailbase}/#' < jail_remove_5.x.txt | xargs rm -rfv
# ln /usr/bin/true /sbin/init
[ ! -e ${ezjail_jailbase}/sbin/init -a -e ${ezjail_jailbase}/usr/bin/true ] && ln ${ezjail_jailbase}/usr/bin/true ${ezjail_jailbase}/sbin/init
# /etc/resolv.conf
[ ! -e ${ezjail_flavours}/default/etc/resolv.conf ] && grep nameserver /etc/resolv.conf > ${ezjail_flavours}/default/etc/resolv.conf
# touch /etc/fstab
[ ! -e ${ezjail_flavours}/default/etc/fstab ] && touch ${ezjail_flavours}/default/etc/fstab
# touch /etc/wall_cmos_clock
[ ! -e ${ezjail_flavours}/default/etc/wall_cmos_clock ] && touch ${ezjail_flavours}/default/etc/wall_cmos_clock
# /etc/localtime
cp -p /usr/share/zoneinfo/Asia/Tokyo ${ezjail_flavours}/default/etc/localtime

jailの作成

ezjail-admin create -f default hoge.example.jp 192.168.0.2

起動

/etc/rc.confにezjail_enable="YES"を追加して

/usr/local/etc/rc.d/ezjail.sh start

portsツリーの導入

まっさらからportsツリーを入れる場合

fetch ftp://ftp.jp.freebsd.org/pub/FreeBSD/ports/ports-current/ports.tar.gz
tar -zxvf ports.tar.gz -C /usr/jails/basejail/usr

portsnapを使う場合

portsnap fetch
portsnap extract -p /usr/jails/basejail/usr/ports

ezjail-adminでAnonCVSを使う

ezjail-admin update -P

Link

最終更新時間:2006年02月26日 17時29分58秒