From: Mark Huang Date: Fri, 30 Jul 2004 16:46:41 +0000 (+0000) Subject: Rewrote vuseradd and vuserdel in bash X-Git-Tag: after-util-vserver-0_30_208-revert~293 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;ds=sidebyside;h=d455ab562fcfb9f93dbcf951c31bc89ca0ab6bb3;p=util-vserver.git Rewrote vuseradd and vuserdel in bash --- diff --git a/scripts/vuseradd b/scripts/vuseradd new file mode 100755 index 0000000..749f8d4 --- /dev/null +++ b/scripts/vuseradd @@ -0,0 +1,66 @@ +#!/bin/bash +# +# useradd(8) wrapper for vservers +# +# Copyright (c) 2004 The Trustees of Princeton University (Trustees). +# +# $Id$ +# + +: ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars} +test -e "$UTIL_VSERVER_VARS" || { + echo "Can not find util-vserver installation; aborting..." + exit 1 +} +. "$UTIL_VSERVER_VARS" + +usage() +{ + echo "usage: $0 name" + exit 1 +} + +[ -z "$1" ] && usage +NAME=$1 + +# add user +useradd -s /bin/vsh $NAME + +# change shell (in case user already exists) +usermod -s /bin/vsh $NAME + +# automount keys (eval expands ~) +eval rm -rf ~$NAME/.ssh +eval ln -sf /etc/vservers/keys/$NAME ~$NAME/.ssh + +USERID=$(awk -F: "\$1 == \"$NAME\" { print \$3 }" < /etc/passwd) +GROUPID=$(awk -F: "\$1 == \"$NAME\" { print \$3 }" < /etc/passwd) + +# create vserver configuration file +if [ ! -f /etc/vservers/$NAME.conf ] ; then + sed -e "s/#S_CONTEXT=/S_CONTEXT=$USERID/" \ + < /etc/vservers/vserver-reference.conf \ + > /etc/vservers/$NAME.conf +fi + +if [ ! -d "$VROOTDIR/$NAME" ] ; then + # check the cache + shopt -s nullglob + for i in "$VROOTDIR/.vcache/"* ; do + [ -d "$i" ] && mv "$i" "$VROOTDIR/$NAME" && break + done + # build vserver + if [ ! -d "$VROOTDIR/$NAME" ] ; then + # build image in .vtmp + TMP=$(mktemp -d "$VROOTDIR/.vtmp/$NAME.XXXXXX") + "$PKGLIBDIR/vbuild" "$VROOTDIR/vserver-reference" "$TMP" + # move it to .vcache when complete + mv "$TMP" "$VROOTDIR/$NAME" + fi + # fix permissions + chmod 755 "$VROOTDIR/$NAME" +fi + +# add user in vserver +vserver $NAME suexec root groupadd -g $GROUPID $NAME +vserver $NAME suexec root useradd -u $USERID -g $GROUPID -p '' $NAME diff --git a/scripts/vuserdel b/scripts/vuserdel new file mode 100755 index 0000000..e021c15 --- /dev/null +++ b/scripts/vuserdel @@ -0,0 +1,41 @@ +#!/bin/bash +# +# userdel(8) wrapper for vservers +# +# Copyright (c) 2004 The Trustees of Princeton University (Trustees). +# +# $Id$ +# + +: ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars} +test -e "$UTIL_VSERVER_VARS" || { + echo "Can not find util-vserver installation; aborting..." + exit 1 +} +. "$UTIL_VSERVER_VARS" + +usage() +{ + echo "usage: $0 name" + exit 1 +} + +[ -z "$1" ] && usage +NAME=$1 + +# stop vserver +vserver $NAME stop + +# delete user +userdel -r $NAME + +# remove vserver configuration file +rm -f /etc/vservers/$NAME.conf + +# destroy vserver +if [ -d $VROOTDIR/$NAME ] ; then + TMP=$(mktemp -d "$VROOTDIR/.vtmp/$NAME.XXXXXX") + mv "$VROOTDIR/$NAME" "$TMP" + chattr -R -i "$TMP" + rm -rf "$TMP" +fi