marsmail-0.2c
This commit is contained in:
230
ohmasteruser
Executable file
230
ohmasteruser
Executable file
@@ -0,0 +1,230 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# adduser 1.0: a utility to add users to the system
|
||||
# Copyright (C) 1994 Ian A. Murdock <imurdock@shell.portal.com>
|
||||
# Sorry Ian, dud was ere.
|
||||
# Modified by Marc Ewing <marc@redhat.com> for RHS Linux
|
||||
# Modified by gac@eng.rau.ac.za, adw@chopin.rau.ac.za, fwo@eng.rau.ac.za,
|
||||
# eddie@rau.ac.za to work great with mars and samba
|
||||
|
||||
# Enhancements: Automagically creates user on mars server side....
|
||||
# Please edit the login script of supervisor user to link into this
|
||||
# script...
|
||||
# Updates a birthday reminder database
|
||||
# updates an expiry database
|
||||
# ensures an ftp-only shell
|
||||
|
||||
# Everything happens too fast, so don't let the user interrupt.
|
||||
trap "" 1 2 3 15
|
||||
|
||||
# Set a few important variables before getting started.
|
||||
NUMARG=$#
|
||||
LOGIN="$1"
|
||||
FNAME="$2"
|
||||
OFFICE="$3"
|
||||
WTEL="$4"
|
||||
HTEL="$5"
|
||||
BDATE="$6"
|
||||
EXIST=0
|
||||
NOHOME="$7"
|
||||
|
||||
PASSWD="/etc/passwd"
|
||||
PBAK="/etc/passwd-" # Some programs use /etc/passwd-, others use
|
||||
# /etc/passwd.OLD. Take your pick.
|
||||
|
||||
GROUP="/etc/group"
|
||||
GBAK="/etc/group-"
|
||||
|
||||
PLOCK="/etc/ptmp" # Standard method of locking the password file.
|
||||
|
||||
DSHELL="/etc/ftponly"
|
||||
DHOME="/hamster/home" # modify this to point to base home dirs.
|
||||
SKEL="/etc/skel"
|
||||
SPOOL="/var/spool/mail"
|
||||
FIRST_UID=500
|
||||
FIRST_GID=500
|
||||
|
||||
# A few sanity checks...
|
||||
if [ `id -u` != 0 ]; then
|
||||
echo "Only root may add users to the system." ; exit 1
|
||||
fi
|
||||
|
||||
if [ $NUMARG = 0 ]; then
|
||||
echo "You need to specify the login to add; for example, \`adduser" \
|
||||
"imurdock'." ;
|
||||
echo "e.g. ohmasteruser username fullname office worktel hometel birthdate";
|
||||
exit 1
|
||||
fi
|
||||
|
||||
id $LOGIN >/dev/null 2>/dev/null && EXIST=1
|
||||
|
||||
if [ $EXIST = 1 ]; then
|
||||
echo "The login $LOGIN already exists."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f $PLOCK ]; then
|
||||
echo "$PASSWD is locked. Try again later." ; exit 1
|
||||
fi
|
||||
|
||||
# And now the program begins:
|
||||
cp $PASSWD /etc/passwd.tmp
|
||||
cp $GROUP /etc/group.tmp
|
||||
echo "" ; echo -n "Looking for first available UID..."
|
||||
NUID=`cut -f 3 -d ":" $PASSWD | sort -n | awk -v uid=$FIRST_UID '
|
||||
{ if ($1 == uid) uid = uid + 1; }
|
||||
END { print uid; }
|
||||
'`
|
||||
|
||||
if [ $NUID -ge 65536 ]; then
|
||||
echo "Sorry, ran out of uids."
|
||||
exit 1
|
||||
fi
|
||||
echo " $NUID"
|
||||
|
||||
|
||||
echo -n "Looking for first available GID..."
|
||||
NGID=`cut -f 3 -d ":" $GROUP | sort -n | awk -v gid=$FIRST_GID '
|
||||
{ if ($1 == gid) gid = gid + 1; }
|
||||
END { print gid; }
|
||||
'`
|
||||
|
||||
if [ $NGID -lt $FIRST_GID ]; then
|
||||
NGID=$FIRST_GID
|
||||
fi
|
||||
echo " $NGID"
|
||||
|
||||
echo "" ; echo -n "Adding login: $LOGIN..."
|
||||
touch $PLOCK ;
|
||||
|
||||
cp $PASSWD $PBAK
|
||||
echo "$LOGIN:*:$NUID:$NGID:New User:$DHOME/./$LOGIN:$DSHELL" >> $PASSWD
|
||||
|
||||
# Add user to users group
|
||||
cp $GROUP $GBAK
|
||||
sed "s/^\(users.*[^:]\)\$/\1,$LOGIN/" < $GBAK |
|
||||
sed "s/^\(users.*:\)\$/\1$LOGIN/" > $GROUP
|
||||
|
||||
#sed "s/^\(users.*[^:]\)$/\1,$LOGIN/" < $GBAK |
|
||||
#sed "s/^\(users.*:\)$/\1,$LOGIN/" > $GROUP
|
||||
|
||||
# Add user to httpd group
|
||||
cp $GROUP $GBAK
|
||||
sed "s/^\(httpd.*[^:]\)\$/\1,$LOGIN/" < $GBAK |
|
||||
sed "s/^\(httpd.*:\)\$/\1$LOGIN/" > $GROUP
|
||||
|
||||
echo "$LOGIN::$NGID:$LOGIN" >> $GROUP
|
||||
|
||||
rm -f $PLOCK
|
||||
echo "done."
|
||||
|
||||
if [ "x$NOHOME" = "x" ]; then
|
||||
echo -n "Creating home directory: $DHOME/$LOGIN..."
|
||||
mkdir $DHOME/$LOGIN
|
||||
chmod 2770 $DHOME/$LOGIN
|
||||
cp -a $SKEL/.??* $SKEL/* $DHOME/$LOGIN >/dev/null 2>/dev/null
|
||||
chown -R $NUID.$NGID $DHOME/$LOGIN
|
||||
echo "done."
|
||||
fi
|
||||
|
||||
echo -n "Creating mailbox: $SPOOL/$LOGIN..."
|
||||
touch $SPOOL/$LOGIN ; chmod 660 $SPOOL/$LOGIN ; chown $NUID.mail $SPOOL/$LOGIN
|
||||
echo $LOGIN >> /etc/ohmaillist
|
||||
echo "0" > /tmp/mail/$LOGIN
|
||||
echo "Done.."
|
||||
|
||||
echo ""
|
||||
echo "Don't forget to set the password."
|
||||
if [ "x$NOHOME" != "x" ]; then
|
||||
echo ""
|
||||
echo "The home directory for $LOGIN was set to $DHOME/$LOGIN but the directory"
|
||||
echo "was not created. Be sure that you set it up properly."
|
||||
fi
|
||||
|
||||
if [ "x$FNAME" = "x" ] ; then # Added to show account expiry times..
|
||||
passwd $LOGIN # creates /etc/expiry
|
||||
chfn $LOGIN
|
||||
echo -n "Expiry date: (mm-yy) "
|
||||
read expiry
|
||||
echo "$LOGIN:$expiry" >> /etc/expiry
|
||||
echo -n "Birthdate: (e.g. Oct 24) "
|
||||
read BDATE
|
||||
echo "$LOGIN:$FNAME:$BDATE:Happy Birthday!" >> /etc/birthdays
|
||||
else
|
||||
# echo "default" | passwd -P $LOGIN
|
||||
FNAME=`echo "$FNAME" | sed 's/[,:]/ /g'`
|
||||
OFFICE=`echo "$OFFICE" | sed 's/[:,]/ /g'`
|
||||
WTEL=`echo "$WTEL" | sed 's/[:,]/ /g'`
|
||||
HTEL=`echo "$HTEL" | sed 's/[:,]/ /g'`
|
||||
chfn -f "$FNAME" -r "$OFFICE" -w "$WTEL" -h "$HTEL" $LOGIN
|
||||
expiry="12-97"
|
||||
echo "$LOGIN:$expiry" >> /etc/expiry
|
||||
echo "$LOGIN:$FNAME:$BDATE:Happy Birthday!" >> /etc/birthdays
|
||||
fi
|
||||
|
||||
echo -n "Creating an example www home page..."
|
||||
mkdir $DHOME/httpd/html/$LOGIN # point to your webroot
|
||||
chown $NUID.$NGID $DHOME/httpd/html/$LOGIN
|
||||
chmod 755 $DHOME/httpd/html/$LOGIN
|
||||
LONGNAME="`grep "^$LOGIN:" $PASSWD | cut -f 5 -d : - | cut -f 1 -d , -`"
|
||||
/usr/sbin/wwwhomepage "$LONGNAME" $LOGIN > $DHOME/httpd/html/$LOGIN/index.htm
|
||||
chown $NUID.httpd $DHOME/httpd/html/$LOGIN/index.htm
|
||||
chmod 755 $DHOME/httpd/html/$LOGIN/index.htm
|
||||
cp /etc/.htaccess $DHOME/httpd/html/$LOGIN/.htaccess
|
||||
chmod 644 $DHOME/httpd/html/$LOGIN/.htaccess
|
||||
chown root.httpd $DHOME/httpd/html/$LOGIN/.htaccess
|
||||
pushd . > /dev/null
|
||||
cd $DHOME/$LOGIN
|
||||
ln -s ../httpd/html/$LOGIN www
|
||||
popd > /dev/null
|
||||
echo "Done..."
|
||||
|
||||
echo "Updating myusers.html"
|
||||
$DHOME/httpd/cgi-bin/nph-users > /$DHOME/httpd/html/myusers.html
|
||||
chmod 755 $DHOME/httpd/html/myusers.html
|
||||
|
||||
# Now for the COOOL part: creates users in mars space so that when supervisor
|
||||
# logs on, new users are created automagically on the novell side so that
|
||||
# user is immediately available on mars.
|
||||
# Please have a look at the modified batch file that supervisor login script
|
||||
# points to.....
|
||||
|
||||
echo "Updating Novell user ID"
|
||||
echo -e "#NO_HOME_DIRECTORY\r\n" >> /hamster/home/supervis/users.usr
|
||||
|
||||
echo -e "#CREATE $LOGIN;$LONGNAME;default^\r\n" >> /hamster/home/supervis/users.usr
|
||||
|
||||
# Change nw-admin to your admin account on the mars side.
|
||||
|
||||
chown nw-admin.nw-admin /hamster/home/supervis/users.usr
|
||||
|
||||
# The following updates a dummy ftp passwd file that shows correct user and
|
||||
# group stuff when a user ftp's to the server
|
||||
|
||||
echo "Updating ftp passwd file"
|
||||
cat /etc/passwd | cut -f 1,3,4,5,6,7,8,9,10 -d : - | sed s/:/:*:/ > $DHOME/etc/passwd
|
||||
cp /etc/group $DHOME/etc/group
|
||||
|
||||
# The next section creates default disk storage space for users, using
|
||||
# user wvdw as template. Please man quota to see how disk quotas works..
|
||||
|
||||
echo "Applying system default disk storage quotas..."
|
||||
/usr/sbin/edquota -p wvdw $LOGIN
|
||||
|
||||
echo ""
|
||||
echo "Supervisor, please log on to the Mars server to update the user's Novell login."
|
||||
echo ""
|
||||
|
||||
# Some sanity checks, if the diff between count is more than one then this
|
||||
# script messed up.
|
||||
|
||||
echo "Word and linecount of passwd file:"
|
||||
wc /etc/passwd.tmp
|
||||
wc $PASSWD
|
||||
echo "Wordcount of group files:"
|
||||
wc /etc/group.tmp
|
||||
wc $GROUP
|
||||
|
||||
# Yip, we're fin..
|
||||
echo "OK, Patricia lets go!"
|
||||
# EOF
|
||||
Reference in New Issue
Block a user