X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=scripts%2Fvuseradd;h=36a0f9511d455be3668957fea1d73b07ec010f6b;hb=7f31ef63c2a02b282aeaf58e761f66182f3934cc;hp=370d85554b8977812556201b900711b7c1a7289b;hpb=2885bbc41d31e930f4941ee97166686aa0ae1ee9;p=util-vserver.git diff --git a/scripts/vuseradd b/scripts/vuseradd index 370d855..36a0f95 100755 --- a/scripts/vuseradd +++ b/scripts/vuseradd @@ -4,7 +4,7 @@ # # Copyright (c) 2004 The Trustees of Princeton University (Trustees). # -# $Id: vuseradd,v 1.5 2004/08/26 16:51:11 mlh-pl_kernel Exp $ +# $Id: vuseradd,v 1.15 2004/11/06 16:10:42 mlhuang Exp $ # : ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars} @@ -23,18 +23,14 @@ usage() [ -z "$1" ] && usage NAME=$1 -# add user -useradd -s /bin/vsh $NAME - -# change shell (in case user already exists) -usermod -s /bin/vsh $NAME +# add slices group if not already present +groupadd slices 2>/dev/null || : -# automount keys (eval expands ~) -eval rm -rf ~$NAME/.ssh -eval ln -nsf /var/pl_sshd/keys/$NAME ~$NAME/.ssh +# add user +useradd -g slices -s /bin/vsh $NAME USERID=$(awk -F: "\$1 == \"$NAME\" { print \$3 }" < /etc/passwd) -GROUPID=$(awk -F: "\$1 == \"$NAME\" { print \$3 }" < /etc/passwd) +GROUPID=$(awk -F: "\$1 == \"slices\" { print \$3 }" < /etc/group) # create vserver configuration file if [ ! -f /etc/vservers/$NAME.conf ] ; then @@ -58,12 +54,15 @@ if [ ! -d "$VROOTDIR/$NAME" ] ; then "$PKGLIBDIR/vbuild" "$VROOTDIR/vserver-reference" "$TMP" RETVAL=$? # move it to .vcache when complete - if [ $RETVAL -eq 0 ] ; then - mv "$TMP" "$VROOTDIR/$NAME" - else + if [ $RETVAL -ne 0 ] || \ + [ $(du -b -s "$TMP" | awk "{ print \$1 }") -lt \ + $(du -b -s "$VROOTDIR/vserver-reference" | awk "{ print \$1 }") ] ; then echo "Error $RETVAL building $VROOTDIR/$NAME" + chattr -R -i "$TMP" rm -rf "$TMP" exit $RETVAL + else + mv "$TMP" "$VROOTDIR/$NAME" fi fi fi @@ -73,6 +72,15 @@ if [ -d "$VROOTDIR/$NAME" ] ; then chmod 755 "$VROOTDIR/$NAME" # add user in vserver - vserver $NAME suexec root groupadd -g $GROUPID $NAME + vserver $NAME suexec root groupadd -g $GROUPID slices vserver $NAME suexec root useradd -u $USERID -g $GROUPID -p '' $NAME + + # add an unrestricted entry to /etc/sudoers file + if [ -f "$VROOTDIR/$NAME/etc/sudoers" ] && \ + ! grep -q "^$NAME" "$VROOTDIR/$NAME/etc/sudoers" ; then + echo "$NAME ALL=(ALL) ALL" >> "$VROOTDIR/$NAME/etc/sudoers" + fi fi + +# turn resource management on for vserver $NAME +service resman start $NAME