From 668c4dfc58490d61398ea3acdf1290f0579b8485 Mon Sep 17 00:00:00 2001 From: erdgeist Date: Thu, 22 Sep 2005 11:45:47 +0000 Subject: First test in live system yielded several problems :) --- ezjail | 27 +++++++++++++++++++-------- ezjail-admin | 38 ++++++++++++++++++++------------------ ezjail.conf.sample | 2 +- 3 files changed, 40 insertions(+), 27 deletions(-) diff --git a/ezjail b/ezjail index e3f1443..b75b467 100755 --- a/ezjail +++ b/ezjail @@ -16,27 +16,38 @@ ezjail_prefix=EZJAIL_PREFIX . /etc/rc.subr name=ezjail -ezjail_enable=${ezjail_enable:-"NO"} rcvar=`set_rcvar` +load_rc_config $name +ezjail_enable=${ezjail_enable:-"NO"} + +restart_cmd="do_restart" start_cmd="do_start" stop_cmd="do_stop" do_start() { - jail_enable=${ezjail_enable} - jail_list=`ls ${ezjail_prefix}/etc/ezjail/` + [ -n "$*" ] && jail_list=`echo $* | tr /~. ___`; + jail_list=${jail_list:-`ls ${ezjail_prefix}/etc/ezjail/`} for jail in $jail_list; do . ${ezjail_prefix}/etc/ezjail/${jail}; done - sh /etc/rc.d/jail start $* + sh /etc/rc.d/jail onestart $jail_list +} + +do_restart() +{ + [ -n "$*" ] && jail_list=`echo $* | tr /~. ___`; + jail_list=${jail_list:-`ls ${ezjail_prefix}/etc/ezjail/`} + for jail in $jail_list; do . ${ezjail_prefix}/etc/ezjail/${jail}; done + sh /etc/rc.d/jail onestop $jail_list + sh /etc/rc.d/jail onestart $jail_list } do_stop() { - jail_enable=${ezjail_enable} - jail_list=`ls ${ezjail_prefix}/etc/ezjail/` + [ -n "$*" ] && jail_list=`echo $* | tr /~. ___`; + jail_list=${jail_list:-`ls ${ezjail_prefix}/etc/ezjail/`} for jail in $jail_list; do . ${ezjail_prefix}/etc/ezjail/${jail}; done - sh /etc/rc.d/jail stop $* + sh /etc/rc.d/jail onestop $jail_list } -load_rc_config $name run_rc_command $* diff --git a/ezjail-admin b/ezjail-admin index 649fde1..ac12f18 100755 --- a/ezjail-admin +++ b/ezjail-admin @@ -43,7 +43,8 @@ create) newjail_softlink= newjail_fill="YES" - for arg in args; do + set -- $args + for arg do case $arg in -x) newjail_fill="NO"; shift;; -r) newjail_root="$2"; shift 2;; @@ -58,7 +59,7 @@ create) fi # relative paths don't make sense in rc.scripts - if [ "${ezjail_jaildir#/}" == "${ezjail_jaildir}" ]; then + if [ ${ezjail_jaildir#/} = ${ezjail_jaildir} ]; then echo Error: Need an absolute path in ezjail_jaildir, it is currently set to: $ezjail_jaildir exit 1; fi @@ -73,7 +74,7 @@ create) # if jail root specified on command line is not absolute, # make it absolute inside our jail directory - if [ "${newjail_root#/}" = "${newjail_root}" ]; then + if [ ${newjail_root#/} = ${newjail_root} ]; then newjail_root=$ezjail_jaildir/$newjail_root fi @@ -100,22 +101,20 @@ create) # if the automount feature is not disabled, create an # fstab entry for new jail - echo $ezjail_jailbase $newjail_root/basejail nullfs ro 0 0 > /etc/fstab.$newjail_name + echo $ezjail_jailbase $newjail_root/basejail nullfs ro 0 0 > /etc/fstab.$newjail_nname # now, where everything seems to have gone right, # create control file in ezjails config dir mkdir -p $ezjail_jailcfgs - echo \ - jail_${newjail_nname}_hostname=\"${newjail_name}\" \n \ - jail_${newjail_nname}_ip=\"${newjail_ip}\" \n \ - jail_${newjail_nname}_rootdir=\"${newjail_root}\" \n \ - jail_${newjail_nname}_exec=\"/bin/sh /etc/rc\" - jail_${newjail_nname}_mount_enable=\"${ezjail_mount_enable}\" \n \ - jail_${newjail_nname}_devfs_enable=\"${ezjail_devfs_enable}\" \n \ - jail_${newjail_nname}_devfs_ruleset="devfsrules_jail" - jail_${newjail_nname}_procfs_enable=\"${ezjail_procfs_enable}\" \n \ - jail_${newjail_nname}_fdescfs_enable=\"${ezjail_fdescfs_enable}\" \n \ - > ${ezail_jailcfgs}/newjail_nname + echo export jail_${newjail_nname}_hostname=\"${newjail_name}\" >> ${ezjail_jailcfgs}/${newjail_nname} + echo export jail_${newjail_nname}_ip=\"${newjail_ip}\" >> ${ezjail_jailcfgs}/${newjail_nname} + echo export jail_${newjail_nname}_rootdir=\"${newjail_root}\" >> ${ezjail_jailcfgs}/${newjail_nname} + echo export jail_${newjail_nname}_exec=\"/bin/sh /etc/rc\" >> ${ezjail_jailcfgs}/${newjail_nname} + echo export jail_${newjail_nname}_mount_enable=\"${ezjail_mount_enable}\" >> ${ezjail_jailcfgs}/${newjail_nname} + echo export jail_${newjail_nname}_devfs_enable=\"${ezjail_devfs_enable}\" >> ${ezjail_jailcfgs}/${newjail_nname} + echo export jail_${newjail_nname}_devfs_ruleset=\"devfsrules_jail\" >> ${ezjail_jailcfgs}/${newjail_nname} + echo export jail_${newjail_nname}_procfs_enable=\"${ezjail_procfs_enable}\" >> ${ezjail_jailcfgs}/${newjail_nname} + echo export jail_${newjail_nname}_fdescfs_enable=\"${ezjail_fdescfs_enable}\" >> ${ezjail_jailcfgs}/${newjail_nname} ;; delete) @@ -132,11 +131,12 @@ update) exit 1; fi - updatejail_installaction=world + updatejail_installaction="world" - for arg in args; do + set -- $args + for arg do case $arg in - -i) updatejail_installaction=installworld; shift;; + -i) updatejail_installaction="installworld"; shift;; -s) ezjail_sourcetree="$2"; shift 2;; --) shift; break;; esac @@ -158,8 +158,10 @@ update) chflags -R noschg ${a}; rm -r ${a}; ln -s /basejail/${a} ${a} done mkdir basejail + ln -s /basejail/usr/ports usr/ports if [ -d ${ezjail_jailtemplate} ]; then + rm -rf ${ezjail_jailtemplate}_old mv ${ezjail_jailtemplate} ${ezjail_jailtemplate}_old fi mv ${ezjail_jailfull} ${ezjail_jailtemplate} diff --git a/ezjail.conf.sample b/ezjail.conf.sample index 5d0667b..9a2cc64 100755 --- a/ezjail.conf.sample +++ b/ezjail.conf.sample @@ -8,7 +8,7 @@ # # Note: If you have spread your jails to multiple locations, use softlinks # to collect them in this directory -ezjail_jaildir=/usr/jails/ +ezjail_jaildir=/usr/jails # Location of the tiny skeleton jail template ezjail_jailtemplate=$ezjail_jaildir/newjail -- cgit v1.2.3