diff options
Diffstat (limited to 'contrib/osx/addsysuser')
-rwxr-xr-x | contrib/osx/addsysuser | 111 |
1 files changed, 63 insertions, 48 deletions
diff --git a/contrib/osx/addsysuser b/contrib/osx/addsysuser index 7b167eac00..50797f1ab0 100755 --- a/contrib/osx/addsysuser +++ b/contrib/osx/addsysuser @@ -4,65 +4,80 @@ # # Modified for Tor installer by Nick Mathewson # 2007-06-12 Modified for leopard by Andrew Lewman +# Copyright (c) 2007 Andrew Lewman +# ROOTPROP=/ if [ "`whoami`" != "root" ]; then -echo "You must be root to execute this script." -exit + echo "You must be root to execute this script." + exit fi if [ "x$3" = "x" ]; then -echo 'Usage: addsysuser <username> "<full name>" <homedir>' -exit 0 + echo 'Usage: addsysuser <username> "<full name>" <homedir>' + exit 0 fi + username=$1 realname=$2 homedir=$3 + if [ -x /usr/bin/dscl ]; then - # Determine the gid of the daemon group - gid=`dscl . -read /groups/daemon gid` - if [ "x`dscl . -list /users|cut -f2 -d' '|grep $username`" != "x" ]; then - echo The account $username already exists. - exit 0 - fi - # home is the local path to the home directory - home=/Users/$username - echo Creating account for $username... - dscl . -create /users/$username - dscl . -create /users/$username _writers_tim_passwd $username - dscl . -create /users/$username realname $realname - dscl . -create /users/$username _writers_passwd $username - dscl . -create /users/$username gid $gid - dscl . -create /users/$username home $homedir - dscl . -create /users/$username name $username - dscl . -create /users/$username passwd '*' - dscl . -create /users/$username shell /dev/null + # Determine the gid of the daemon group + gid=`dscl . -read /groups/daemon gid` + if [ "x`dscl . -list /users|cut -f2 -d' '|grep $username`" != "x" ]; then + echo The account $username already exists. + exit 0 + fi + if [ -x /usr/bin/nidump ]; then + uiddef=`nidump passwd / | cut -d: -f3 | sort -n | grep -v '^[56789]..' |grep -v '^....$' | tail -n 1` + else + _tmp=/tmp/_dsexport_tmp.txt.$$ + rm -f $_tmp + dsexport $_tmp '/Local/Default' 'dsRecTypeStandard:Users' > /dev/null 2>&1 + uiddef=`cat $_tmp | sed 's/\\\://g' | cut -d: -f6 | grep '^[0-9]' | sort -n | grep -v '^[56789]..' | grep -v '^....$' | tail -n 1` + rm -f $_tmp + fi + uiddef=`echo $uiddef + 1 | bc` + dscl . -create /users/$username uid $uiddef + # home is the local path to the home directory + home=/Users/$username + echo Creating account for $username... + dscl . -create /users/$username + dscl . -create /users/$username _writers_tim_passwd $username + dscl . -create /users/$username realname $realname + dscl . -create /users/$username _writers_passwd $username + dscl . -create /users/$username gid $gid + dscl . -create /users/$username home $homedir + dscl . -create /users/$username name $username + dscl . -create /users/$username passwd '*' + dscl . -create /users/$username shell /dev/null else - # Determine the gid of the daemon group - gid=`niutil -readprop $ROOTPROP /groups/daemon gid` - if [ "x`niutil -list $ROOTPROP /users|cut -f2 -d' '|grep $username`" != "x" ]; then - echo The account $username already exists. - exit 0 - fi - # home is the local path to the home directory - home=/Users/$username - # defhome is what goes into NetInfo - defhome="/Network/Servers/MyServer/Users" - #echo "Determining next available system uid (please be patient)..." - # Uids over 500 are for system users. - uiddef=`nidump passwd / | cut -d: -f3 | sort -n | grep -v '^[56789]..' |grep -v '^....$' | tail -n 1` - uiddef=`echo $uiddef + 1 |bc` - echo Creating account for $username... - niutil -create $ROOTPROP /users/$username - niutil -createprop $ROOTPROP /users/$username _writers_tim_passwd $username - niutil -createprop $ROOTPROP /users/$username realname $realname - niutil -createprop $ROOTPROP /users/$username _writers_passwd $username - niutil -createprop $ROOTPROP /users/$username uid $uiddef - #niutil -createprop $ROOTPROP /users/$username home_loc "<home_dir><url>afp://afp.server.com/Users/</url><path>$username</path></home_dir>" - niutil -createprop $ROOTPROP /users/$username gid $gid - niutil -createprop $ROOTPROP /users/$username home $homedir - niutil -createprop $ROOTPROP /users/$username name $username - niutil -createprop $ROOTPROP /users/$username passwd '*' - niutil -createprop $ROOTPROP /users/$username shell /dev/null + # Determine the gid of the daemon group + gid=`niutil -readprop $ROOTPROP /groups/daemon gid` + if [ "x`niutil -list $ROOTPROP /users|cut -f2 -d' '|grep $username`" != "x" ]; then + echo The account $username already exists. + exit 0 + fi + # home is the local path to the home directory + home=/Users/$username + # defhome is what goes into NetInfo + defhome="/Network/Servers/MyServer/Users" + #echo "Determining next available system uid (please be patient)..." + # Uids over 500 are for system users. + uiddef=`nidump passwd / | cut -d: -f3 | sort -n | grep -v '^[56789]..' |grep -v '^....$' | tail -n 1` + uiddef=`echo $uiddef + 1 |bc` + echo Creating account for $username... + niutil -create $ROOTPROP /users/$username + niutil -createprop $ROOTPROP /users/$username _writers_tim_passwd $username + niutil -createprop $ROOTPROP /users/$username realname $realname + niutil -createprop $ROOTPROP /users/$username _writers_passwd $username + niutil -createprop $ROOTPROP /users/$username uid $uiddef + #niutil -createprop $ROOTPROP /users/$username home_loc "<home_dir><url>afp://afp.server.com/Users/</url><path>$username</path></home_dir>" + niutil -createprop $ROOTPROP /users/$username gid $gid + niutil -createprop $ROOTPROP /users/$username home $homedir + niutil -createprop $ROOTPROP /users/$username name $username + niutil -createprop $ROOTPROP /users/$username passwd '*' + niutil -createprop $ROOTPROP /users/$username shell /dev/null fi |