#!/bin/sh # version 0.1 20121209 iNetCom/Jan Holler login=$1 uid=$2 passwdf="/etc/passwd" passwdfmin="/etc/passwd-" shadowf="/etc/shadow" shadowfmin="/etc/shadow-" groupf="/etc/group" smbpasswdf="/etc/samba/smbpasswd" homerootdir="/home" shell="/bin/ash" echo "Add a new user:" if [ "$1" != "" ] ; then login=$1 else echo -n "login: " ; read login fi # change '5000' for the top end of your allowed uids username=`grep $login $passwdf|awk -F : '{print $1}'` if [ "$username" = "$login" ]; then echo "ERROR: The user $login already exists, so please use a different login name." exit 1 else echo "using username: $login" fi if expr "$2" : '-\?[0-9]\+$' >/dev/null ; then uid=$2 else uid="$(awk -F: '{ if (big < $3 && $3 < 5000) big=$3 } END { print big + 1 }' $passwdf)" # set to new user layout (fedora) starting uids from 1000 on if [ $uid -lt 1000 ] ; then uid=1000 fi fi userid=`grep $uid $passwdf|awk -F : '{print $1}'` if [ "$userid" = "$uid" ]; then echo "ERROR: The userid $uid already exists, so please use a different userid." exit 1 else echo "using uid/guid: $uid" fi homedir=$homerootdir/$login # gid=uid as in Fedora gid=$uid echo -n "Optional: full name: " ; read fullname #echo -n "shell: " ; read shell if [ "$fullname" = "" ] ; then fullname=$login fi echo ${login}:x:${uid}:${gid}:${fullname}:${homedir}:$shell >> $passwdf echo ${login}:*:${uid}:${gid}:${fullname}:${homedir}:$shell >> $passwdfmin echo ${login}:*:11647:0:99999:7::: >> $shadowf echo ${login}:*:11647:0:99999:7::: >> $shadowfmin echo "${login}:x:${gid}:$login" >> $groupf if [ ! -d "$homerootdir" ]; then mkdir $homerootdir fi if [ ! -d "$homedir" ]; then mkdir $homedir fi #cp -R /etc/skel/.[a-zA-Z]* $homedir chmod 755 $homedir find $homedir -print | xargs chown ${login}:$login passwd $login exit 0