|
|
coherent
#!/bin/sh # /etc/newusr 6/7/91 # Usage: /etc/newusr user UserName parentdir [ shell ] # Requires root permissions. # File and directory names. PFILE=/etc/passwd GFILE=/etc/group LOCK=/tmp/passwd.tmp MAILDIR=/usr/spool/mail SHELL=/bin/sh # Check usage. if /bin/test $# -ne 3 -a $# -ne 4 then echo "Usage: /etc/newusr user \"User Name\" parentdir [shell]" >&2 && exit 1 fi # Use SHELL if specified. if /bin/test $# -eq 4 then SHELL=$4 fi # Lock out other access to password and group files. if /bin/test -f $LOCK then echo "newusr: lock file $LOCK exists" >&2 && exit 1 fi >$LOCK # Make sure invoker is root. chown root $LOCK 2>/dev/null || echo "newusr: permission denied" >&2 && rm $LOCK && exit 1 # Sort $PFILE by uid and find max uid. sort -n '-t:' +2 -3 -o $PFILE $PFILE UID=`tail -1 $PFILE | sed -n "s/[^:]*:[^:]*:\\([^:]*\\).*/\\1/p"` # Find gid for group "user". GID=`egrep user $GFILE | sed -n "s/[^:]*:[^:]*:\\([^:]*\\).*/\\1/p"` # Test if user exists already. if egrep "^$1:" $PFILE >/dev/null then echo "newusr: user $1 already exists" >&2 else UID=`expr $UID + 1` HOME=$3/$1 PROF=$HOME/.profile MAILBOX=$MAILDIR/$1 echo "Adding user: uname=$1 uid=$UID gname=user gid=$GID HOME=$HOME shell=$SHELL" # Update password file. echo "$1::$UID:$GID:$2:$HOME:$SHELL" >>$PFILE # Update group file. cat $GFILE >$LOCK sed -e "/^user:/s/\$/,$1/" $LOCK >$GFILE # Make new directory, .profile, mailbox. mkdir -r $HOME || echo /etc/newusr: $HOME already exists echo "MAIL=$MAILBOX" >$PROF >$MAILBOX chown $1 $HOME $PROF $MAILBOX chgrp user $HOME $PROF $MAILBOX fi rm $LOCK sync exit 0 # end of /etc/newusr
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.