diff options
author | Rob Austein <sra@hactrn.net> | 2011-05-17 22:39:12 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2011-05-17 22:39:12 +0000 |
commit | 899336d4cce075441ac3cd992ad28a79330da732 (patch) | |
tree | bb6c0e79c8963c179ec455d0cff9b0b4314ec1d8 /rcynic-ng/installation-scripts/freebsd/rc.d.rcynic | |
parent | 41a17c2303426d3d03e3490bbec404e6e3d4a5d8 (diff) |
Fork rcynic so I can start hacking it for parallel rsync
svn path=/configure; revision=3816
Diffstat (limited to 'rcynic-ng/installation-scripts/freebsd/rc.d.rcynic')
-rwxr-xr-x | rcynic-ng/installation-scripts/freebsd/rc.d.rcynic | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/rcynic-ng/installation-scripts/freebsd/rc.d.rcynic b/rcynic-ng/installation-scripts/freebsd/rc.d.rcynic new file mode 100755 index 00000000..b86c9b81 --- /dev/null +++ b/rcynic-ng/installation-scripts/freebsd/rc.d.rcynic @@ -0,0 +1,71 @@ +#!/bin/sh - +# +# $Id$ +# +# PROVIDE: rcynic +# REQUIRE: DAEMON +# KEYWORD: nojail + +. /etc/rc.subr + +name="rcynic" +start_cmd="rcynic_start" +stop_cmd="rcynic_stop" + +: ${rcynic_jaildir="/var/rcynic"} +: ${rcynic_user="rcynic"} +: ${rcynic_group="rcynic"} + +rcynic_start() +{ + /bin/test -d "${rcynic_jaildir}" || /bin/mkdir "${rcynic_jaildir}" + /sbin/umount "${rcynic_jaildir}/dev" 2>/dev/null + + /usr/sbin/mtree -deU -p "${rcynic_jaildir}" <<EOF + + /set type=dir uname=root gname=wheel mode=0555 + . + bin + .. + dev + .. + etc + trust-anchors + .. + .. + var + run + .. + .. + data uname=${rcynic_user} gname=${rcynic_group} mode=0755 + .. + .. +EOF + + /bin/chmod -R a-w "${rcynic_jaildir}/bin" "${rcynic_jaildir}/etc" + /usr/sbin/chown -R root:wheel "${rcynic_jaildir}/bin" "${rcynic_jaildir}/etc" + + if ! /sbin/mount -t devfs dev "${rcynic_jaildir}/dev"; then + echo "Mounting devfs on ${rcynic_jaildir}/dev failed..." + exit 1 + fi + + /sbin/devfs -m "${rcynic_jaildir}/dev" rule apply hide + /sbin/devfs -m "${rcynic_jaildir}/dev" rule apply path null unhide + /sbin/devfs -m "${rcynic_jaildir}/dev" rule apply path random unhide + + for i in /etc/localtime /etc/resolv.conf; do + j="${rcynic_jaildir}${i}" + if /bin/test -r "$i" && ! /usr/bin/cmp -s "$i" "$j"; then + /usr/bin/install -m 444 -o root -g wheel -p "$i" "$j" + fi + done +} + +rcynic_stop() +{ + /sbin/umount "${rcynic_jaildir}/dev" 2>/dev/null +} + +load_rc_config $name +run_rc_command "$1" |