Annotation of coherent/a/etc/newusr, revision 1.1

1.1     ! root        1: #!/bin/sh
        !             2: # /etc/newusr 6/7/91
        !             3: # Usage: /etc/newusr user UserName parentdir [ shell ]
        !             4: # Requires root permissions.
        !             5: 
        !             6: # File and directory names.
        !             7: PFILE=/etc/passwd
        !             8: GFILE=/etc/group
        !             9: LOCK=/tmp/passwd.tmp
        !            10: MAILDIR=/usr/spool/mail
        !            11: SHELL=/bin/sh
        !            12: 
        !            13: # Check usage.
        !            14: if /bin/test $# -ne 3 -a $# -ne 4
        !            15: then
        !            16:        echo "Usage: /etc/newusr user \"User Name\" parentdir [shell]" >&2 && exit 1
        !            17: fi
        !            18: 
        !            19: # Use SHELL if specified.
        !            20: if /bin/test $# -eq 4
        !            21: then
        !            22:        SHELL=$4
        !            23: fi
        !            24: 
        !            25: # Lock out other access to password and group files.
        !            26: if /bin/test -f $LOCK
        !            27: then
        !            28:        echo "newusr: lock file $LOCK exists" >&2 && exit 1
        !            29: fi
        !            30: >$LOCK
        !            31: 
        !            32: # Make sure invoker is root.
        !            33: chown root $LOCK 2>/dev/null || echo "newusr: permission denied" >&2 && rm $LOCK && exit 1
        !            34: 
        !            35: # Sort $PFILE by uid and find max uid.
        !            36: sort -n '-t:' +2 -3 -o $PFILE $PFILE
        !            37: UID=`tail -1 $PFILE | sed -n "s/[^:]*:[^:]*:\\([^:]*\\).*/\\1/p"`
        !            38: 
        !            39: # Find gid for group "user".
        !            40: GID=`egrep user $GFILE | sed -n "s/[^:]*:[^:]*:\\([^:]*\\).*/\\1/p"`
        !            41: 
        !            42: # Test if user exists already.
        !            43: if egrep "^$1:" $PFILE >/dev/null
        !            44: then
        !            45:        echo "newusr:  user $1 already exists" >&2
        !            46: else
        !            47:        UID=`expr $UID + 1`
        !            48:        HOME=$3/$1
        !            49:        PROF=$HOME/.profile
        !            50:        MAILBOX=$MAILDIR/$1
        !            51:        echo "Adding user: uname=$1 uid=$UID gname=user gid=$GID HOME=$HOME shell=$SHELL"
        !            52: 
        !            53:        # Update password file.
        !            54:        echo "$1::$UID:$GID:$2:$HOME:$SHELL" >>$PFILE
        !            55: 
        !            56:        # Update group file.
        !            57:        cat $GFILE >$LOCK
        !            58:        sed -e "/^user:/s/\$/,$1/" $LOCK >$GFILE
        !            59: 
        !            60:        # Make new directory, .profile, mailbox.
        !            61:        mkdir -r $HOME || echo /etc/newusr: $HOME already exists
        !            62:        echo "MAIL=$MAILBOX" >$PROF
        !            63:        >$MAILBOX
        !            64:        chown $1 $HOME $PROF $MAILBOX
        !            65:        chgrp user $HOME $PROF $MAILBOX
        !            66: fi
        !            67: 
        !            68: rm $LOCK
        !            69: sync
        !            70: exit 0
        !            71: 
        !            72: # end of /etc/newusr

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.