Masato Taruishi
taru****@sourc*****
2004年 6月 16日 (水) 17:52:51 JST
=================================================================== RCS file: ultrapossum/module/server/00server,v retrieving revision 1.33 retrieving revision 1.34 diff -u -r1.33 -r1.34 --- ultrapossum/module/server/00server 2004/06/15 04:36:55 1.33 +++ ultrapossum/module/server/00server 2004/06/16 08:52:51 1.34 @@ -31,6 +31,8 @@ SLAPADD=`ultrapossum_getconf SLAPADD "slapadd"` SLAPADD_EXTRA_ARGS=`ultrapossum_getconf SLAPADD_EXTRA_ARGS ""` +UCDATA_PATH=`ultrapossum_getconf UCDATA_PATH $ldapdatadir/ucdata` + SLAPD_RPM_PACKAGE=`ultrapossum_getconf SLAPD_RPM_PACKAG openldap-servers` SLAPD_EXTRA_ARGS=`ultrapossum_getconf SLAPD_EXTRA_ARGS ` SLURPD_EXTRA_ARGS=`ultrapossum_getconf SLURPD_EXTRA_ARGS ` @@ -64,9 +66,12 @@ DBCACHESIZE=`ultrapossum_getconf DBCACHESIZE 1000000` CACHESIZE=`ultrapossum_getconf CACHESIZE 1000` CREDENTIALS=`ultrapossum_getconf CREDENTIALS ultrapossum-replica` +CHROOTDIRECTORY=`ultrapossum_getconf CHROOTDIRECTORY ""` DBDIRECTORY=`ultrapossum_getconf DBDIRECTORY $localstatedir/lib/$PACKAGE/$ULTRAPOSSUM_PROJECT/db` LOGDIR=`ultrapossum_getconf LOGDIR $localstatedir/log/$PACKAGE` UPDATERDN=`ultrapossum_getconf UPDATERDN cn=replica,ou=application` +CHROOTFILES=`ultrapossum_getconf CHROOTFILES "$SLAPDMASTERCONF $ULTRAPOSSUM_MASTER_SLAPD_CONF $ULTRAPOSSUM_SLAPD_CONF $(egrep '^include' $SLAPDMASTERCONF 2> /dev/null | awk -F' ' '{print $2;}') $UCDATA_PATH $ldaplibdir"` +CHROOTEXTRAFILES=`ultrapossum_getconf CHROOTEXTRAFILES ""` LDAPLISTENPORT=`ultrapossum_getconf LDAPLISTENPORT "$ldaplistenport"` LDAPURILIST=`ultrapossum_getconf LDAPURILIST ldap://:$LDAPLISTENPORT/` =================================================================== RCS file: ultrapossum/module/server/2.0,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- ultrapossum/module/server/2.0 2004/06/14 05:55:28 1.14 +++ ultrapossum/module/server/2.0 2004/06/16 08:52:51 1.15 @@ -30,7 +30,7 @@ echo "E: $SLAPD abnormally exits. Probably you can see the error by syslog" 1>&2 return 1 fi - wait_pid $SLAPD_PIDFILE + wait_pid $CHROOTDIRECTORY/$SLAPD_PIDFILE echo -n "`basename $SLAPD`" touch $DIRECTORY/ultrapossum-environ @@ -59,7 +59,7 @@ } ldapmaster_stop() { - stop_pid $SLAPD_PIDFILE + stop_pid $CHROOTDIRECTORY/$SLAPD_PIDFILE echo -n "`basename $SLAPD`" if test "`ldapslurp_status`" = "running"; then ldapslurp_stop @@ -77,7 +77,7 @@ } ldapmaster_status() { - status_pid $SLAPD_PIDFILE + status_pid $CHROOTDIRECTORY/$SLAPD_PIDFILE } ldapslurp_start() { @@ -99,18 +99,18 @@ } ldapslave_stop() { - stop_pid $SLAPD_SLAVE_PIDFILE + stop_pid $CHROOTDIRECTORY$SLAPD_SLAVE_PIDFILE echo -n "`basename $SLAPD`" } ldapslave_start() { $SLAPD -h "$SLAPDURILIST" - wait_pid $SLAPD_SLAVE_PIDFILE + wait_pid $CHROOTDIRECTORY/$SLAPD_SLAVE_PIDFILE echo -n "`basename $SLAPD`" } ldapslave_status() { - status_pid $SLAPD_SLAVE_PIDFILE + status_pid $CHROOTDIRECTORY/$SLAPD_SLAVE_PIDFILE } # status <pidfile> =================================================================== RCS file: ultrapossum/module/server/createdb.sh,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- ultrapossum/module/server/createdb.sh 2004/06/14 09:18:29 1.17 +++ ultrapossum/module/server/createdb.sh 2004/06/16 08:52:51 1.18 @@ -23,8 +23,8 @@ eval `ultrapossum-config init` 2> /dev/null -if test -d "$DIRECTORY"; then - echo "W: $DIRECTORY already exist" 1>&2 +if test -d "$CHROOTDIRECTORY$DIRECTORY"; then + echo "W: $CHROOTDIRECTORY$DIRECTORY already exist" 1>&2 exit 0 fi @@ -35,7 +35,10 @@ ln -s $DBWORKDIR $DIRECTORY echo "done" 1>&2 else - install -d $DIRECTORY > /dev/null + if test "x$CHROOTDIRECTORY" != "x"; then + ln -s $CHROOTDIRECTORY$DIRECTORY $DIRECTORY + fi + install -d $CHROOTDIRECTORY$DIRECTORY > /dev/null fi touch $DIRECTORY/ultrapossum-environ @@ -55,7 +58,7 @@ /bin/rm -f $tmp if test "x$DBWORKDIR" != "x"; then /bin/rm -rf $DBWORKDIR - if test -L "$DIRECTORY"; then + if ! /bin/ls -L "$DIRECTORY" > /dev/null 2> /dev/null; then /bin/rm $DIRECTORY fi fi @@ -114,7 +117,7 @@ fi fi -echo -n "Creating Initial Directory in $DIRECTORY... " 1>&2 +echo -n "Creating Initial Directory in $CHROOTDIRECTORY$DIRECTORY... " 1>&2 if $SLAPADD -b $SUFFIX -f $SLAPDCONF $SLAPADD_EXTRA_ARGS < $ldiffile; then echo "done" 1>&2 else @@ -149,6 +152,10 @@ if test "x$DBWORKDIR" != "x"; then echo -n "Adjusting database... " 1>&2 /bin/rm $DIRECTORY - /bin/cp -rp $DBWORKDIR $DIRECTORY + install -d $CHROOTDIRECTORY`dirname $DIRECTORY` + /bin/cp -rp $DBWORKDIR $CHROOTDIRECTORY$DIRECTORY + if test "x$CHROOTDIRECTORY" != "x"; then + /bin/ln -s $CHROOTDIRECTORY$DIRECTORY $DIRECTORY + fi echo "done" 1>&2 fi =================================================================== RCS file: ultrapossum/module/server/formatdb.sh,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- ultrapossum/module/server/formatdb.sh 2004/06/02 02:39:20 1.5 +++ ultrapossum/module/server/formatdb.sh 2004/06/16 08:52:51 1.6 @@ -26,6 +26,6 @@ exit 1 fi -/bin/rm -rf $DIRECTORY $CONFSTATUS +/bin/rm -rf $DIRECTORY $CONFSTATUS $CHROOTDIRECTORY$DIRECTORY update-ultrapossum configure =================================================================== RCS file: ultrapossum/module/server/server.cf,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- ultrapossum/module/server/server.cf 2004/06/01 08:00:50 1.8 +++ ultrapossum/module/server/server.cf 2004/06/16 08:52:51 1.9 @@ -11,6 +11,18 @@ #SLAPD_VERSION="2.0" ### +### Chroot 'jail' directory Configuration +### + +# Directory after opening listeners but before reading any +# configuration file or initializing any backend. +#CHROOTDIRECTORY=/org/ultrapossum/ +CHROOTDIRECTORY=/org/ultrapossum/ + +# Files or directories to be copied into the jailed directory +#CHROOTEXTRAFILES="" + +### ### Database Configuration ### =================================================================== RCS file: ultrapossum/module/server/startup,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- ultrapossum/module/server/startup 2004/04/05 16:23:37 1.9 +++ ultrapossum/module/server/startup 2004/06/16 08:52:51 1.10 @@ -39,6 +39,18 @@ $UPDATEDIR/update-server configure fi update-ultrapossum reconfigure + if test "x$CHROOTDIRECTORY" != "x"; then + setup_chroot_env + fi +} + +setup_chroot_env() { + for f in $CHROOTFILES $CHROOTEXTRAFILES + do + install -d $CHROOTDIRECTORY`dirname $f` + /bin/cp -rp $f $CHROOTDIRECTORY`dirname $f` + done + SLAPD_EXTRA_ARGS="-r $CHROOTDIRECTORY $SLAPD_EXTRA_ARGS" } case "x$1" in =================================================================== RCS file: ultrapossum/module/server/update-server,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- ultrapossum/module/server/update-server 2004/06/15 06:27:17 1.39 +++ ultrapossum/module/server/update-server 2004/06/16 08:52:51 1.40 @@ -99,10 +99,11 @@ /bin/rm -f $INITLDIF fi - if ! test -d "`dirname $SLAPD_PIDFILE`"; then - progress "Creating `dirname $SLAPD_PIDFILE` for pidfile... " - install -d `dirname $SLAPD_PIDFILE` - progress "Creating `dirname $SLAPD_PIDFILE` for pidfile... done" + install -d `dirname $SLURPD_PIDFILE` + if ! test -d "`dirname $CHROOTDIRECTORY$SLAPD_PIDFILE`"; then + progress "Creating `dirname $CHROOTDIRECTORY$SLAPD_PIDFILE` for pidfile... " + install -d `dirname $CHROOTDIRECTORY$SLAPD_PIDFILE` + progress "Creating `dirname $CHROOTDIRECTORY$SLAPD_PIDFILE` for pidfile... done" fi if ! test -d "$DIRECTORY"; then