From bb046d1a21058af9e2077d6b4f0418667862d46e Mon Sep 17 00:00:00 2001 From: erdgeist Date: Sat, 3 Sep 2005 15:42:28 +0000 Subject: Here we go --- Makefile | 9 +++++++++ ezjail | 42 +++++++++++++++++++++++++++++++++++++++++ ezjail-admin | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ ezjail.conf.sample | 32 +++++++++++++++++++++++++++++++ 4 files changed, 138 insertions(+) create mode 100755 Makefile create mode 100755 ezjail create mode 100755 ezjail-admin create mode 100755 ezjail.conf.sample diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..ec3d9ba --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ +all: + +install: + sed s:EZJAIL_PREFIX:${PREFIX}: ezjail > ${PREFIX}/etc/rc.d/ezjail + chmod 755 ${PREFIX}/etc/rc.d/ezjail + sed s:EZJAIL_PREFIX:${PREFIX}: ezjail-admin > ${PREFIX}/bin/ezjail-admin + chmod 755 ${PREFIX}/bin/ezjail-admin + cp -p ezjail.conf.sample ${PREFIX}/etc/ + mkdir -p ${PREFIX}/etc/ezjail/ diff --git a/ezjail b/ezjail new file mode 100755 index 0000000..e3f1443 --- /dev/null +++ b/ezjail @@ -0,0 +1,42 @@ +#/bin/sh + +# $FreeBSD$ +# +# PROVIDE: ezjail +# +# Note: Add the following lines to $PREFIX/etc/rc.conf to enable ezjail, +# +#ezjail_enable="YES" +# +# Please do not change this file, configure in $PREFIX/etc/ezjail.conf + +# ugly: this variable will be set on port install time +ezjail_prefix=EZJAIL_PREFIX + +. /etc/rc.subr + +name=ezjail +ezjail_enable=${ezjail_enable:-"NO"} +rcvar=`set_rcvar` + +start_cmd="do_start" +stop_cmd="do_stop" + +do_start() +{ + jail_enable=${ezjail_enable} + 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 $* +} + +do_stop() +{ + jail_enable=${ezjail_enable} + 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 $* +} + +load_rc_config $name +run_rc_command $* diff --git a/ezjail-admin b/ezjail-admin new file mode 100755 index 0000000..e7fe216 --- /dev/null +++ b/ezjail-admin @@ -0,0 +1,55 @@ +#!/bin/sh + +# ugly: this variable is set during port install time +ezjail_prefix=EZJAIL_PREFIX + +if [ "0" != "`id -u`" ]; then + echo "Retry as root"; exit 1; +fi + +exit +if [ -f ${ezjail_prefix}/etc/ezjail.conf ]; then + . ${ezjail_prefix}/etc/ezjail.conf; +fi + +if [ -z "$1" ]; + then echo "Syntax: $0 [create|delete|list|update] {params}"; exit; +fi + +case "$1" in +create) + mkdir ${newjail_root} && cd ${ezjail_jailtemplate} \ + && find * | cpio -p -v ${newjail_root} + ;; +delete) + + ;; +list) + + ;; +update) + + if [ ! -d ${ezjail_sourcetree} ]; then + echo "Cannot find your copy of the FreeBSD source tree in $ezjail_sourcetree."; exit 1; + fi + + cd ${ezjail_sourcetree} + rm -r ${ezjail_jailfull}; mkdir -p ${ezjail_jailfull} + make world DESTDIR=${ezjail_jailfull} + make distribution DESTDIR=${ezjail_jailfull} + + cd ${ezjail_jailfull} + mkdir -p ${ezjail_jailbase} + for a in bin sbin usr/bin usr/include usr/lib usr/libexec usr/sbin usr/src usr/share; do + find ${a} | cpio -d -p -v ${ezjail_jailbase}; + chflags -R noschg ${a}; rm -r ${a}; ln -s /basejail/${a} ${a} + done + mkdir basejail + + if [ -d ${ezjail_jailtemplate} ]; then + mv ${ezjail_jailtemplate} ${ezjail_jailtemplate}_old + fi + mv ${ezjail_jailfull} ${ezjail_jailtemplate} + + ;; +esac diff --git a/ezjail.conf.sample b/ezjail.conf.sample new file mode 100755 index 0000000..837f500 --- /dev/null +++ b/ezjail.conf.sample @@ -0,0 +1,32 @@ +# ezjail.conf - Example file, see ezjail(x) +# +# Note: If you alter some of those variables AFTER creating your first +# jail, you may have to adapt /etc/fstab.* and ${PREFIX}/etc/ezjail/* by +# hand + +# Location of jail root directories +# +# Note: If you habe spread your jails to multiple locations, use softlinks +# to collect them in this directory +ezjail_jaildir=/usr/jails/ + +# Location of the tiny skeleton jail template +ezjail_jailtemplate=$ezjail_jaildir/newjail + +# Location of the huge base jail +ezjail_jailbase=$ezjail_jaildir/basejail + +# Location of your copy of FreeBSD's source tree +ezjail_sourcetree=/usr/src + +# Default options for newly created jails +# +# Note: Be VERY careful about disabling ezjail_mount_enable. Mounting +# basejail via nullfs depends on this. You will have to find other +# ways to provide your jail with essential system files +ezjail_mount_enable="YES" +ezjail_devfs_enable="YES" +ezjail_devfs_ruleset="devfsrules_jail" +ezjail_procfs_enable="YES" +ezjail_fdescfs_enable="YES" + -- cgit v1.2.3