backport the dscl addition for osx 10.5 users.

svn:r11766
This commit is contained in:
Andrew Lewman 2007-10-05 00:48:04 +00:00
parent b0b1665765
commit 08371520d2
1 changed files with 48 additions and 25 deletions

View File

@ -3,6 +3,8 @@
# Original adduser 05 Feb 2002 by Jon L. Gardner
#
# Modified for Tor installer by Nick Mathewson
# 2007-06-12 Modified for leopard by Andrew Lewman
ROOTPROP=/
@ -17,29 +19,50 @@ fi
username=$1
realname=$2
homedir=$3
# GID 20 is "staff" which is the default. Change it if you want.
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
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
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
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