Backport candidate. Updated to work with all versions of osx we support (10.3-10.5).

svn:r10579
This commit is contained in:
Andrew Lewman 2007-06-12 22:17:24 +00:00
parent 3c9cddd706
commit b022b95a13
2 changed files with 54 additions and 32 deletions

View File

@ -5,6 +5,9 @@
# Modified for Tor installer by Nick Mathewson # Modified for Tor installer by Nick Mathewson
# 2007-06-12 Modified for leopard by Andrew Lewman # 2007-06-12 Modified for leopard by Andrew Lewman
ROOTPROP=/
if [ "`whoami`" != "root" ]; then if [ "`whoami`" != "root" ]; then
echo "You must be root to execute this script." echo "You must be root to execute this script."
exit exit
@ -16,30 +19,50 @@ fi
username=$1 username=$1
realname=$2 realname=$2
homedir=$3 homedir=$3
# GID 20 is "staff" which is the default. Change it if you want. if [ -x /usr/bin/dscl ]; then
#gid=`niutil -readprop $ROOTPROP /groups/daemon gid` # Determine the gid of the daemon group
gid=`dscl . -read /groups/daemon gid` gid=`dscl . -read /groups/daemon gid`
echo $gid if [ "x`dscl . -list /users|cut -f2 -d' '|grep $username`" != "x" ]; then
#if [ "x`niutil -list $ROOTPROP /users|cut -f2 -d' '|grep $username`" != "x" ]; then echo The account $username already exists.
if [ "x`dscl . -list /users|cut -f2 -d' '|grep $username`" != "x" ]; then exit 0
echo The account $username already exists. fi
exit 0 # 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 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...
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

View File

@ -33,11 +33,9 @@
## (ie "Tor", "torstartup", ...) the list should be new-line-delimited. ## (ie "Tor", "torstartup", ...) the list should be new-line-delimited.
PACKAGE_LIST_SRC=./package_list.txt PACKAGE_LIST_SRC=./package_list.txt
### this is the name of the user created in the install process of Tor ### this is the name of the user created in the install process of Tor
TOR_USER=_tor TOR_USER=_tor
### these should be constant across all osX installs (so leave them be) ### these should be constant across all osX installs (so leave them be)
STARTUP_ITEMS_DIR=/Library/StartupItems STARTUP_ITEMS_DIR=/Library/StartupItems
PKG_RCPT_BASE_DIR=/Library/Receipts PKG_RCPT_BASE_DIR=/Library/Receipts
@ -45,7 +43,6 @@ BOM_INTERMEDIATE_DIR=Contents/Resources
INFO_INTERMEDIATE_DIR=$BOM_INTERMEDIATE_DIR/English.lproj INFO_INTERMEDIATE_DIR=$BOM_INTERMEDIATE_DIR/English.lproj
TEMP_BOM_CONTENTS=/tmp/tor_uninst_scratch TEMP_BOM_CONTENTS=/tmp/tor_uninst_scratch
### make sure the script is being run as root, barf if not ### make sure the script is being run as root, barf if not
if [ "`whoami`" != "root" ]; then if [ "`whoami`" != "root" ]; then
echo "Must be root to run the uninstall script." echo "Must be root to run the uninstall script."
@ -128,9 +125,11 @@ done < $PACKAGE_LIST_SRC
## nuke the user created by the install process. ## nuke the user created by the install process.
echo ". Removing created user $TOR_USER" echo ". Removing created user $TOR_USER"
#niutil -destroy . /users/$TOR_USER if [ -x /usr/bin/dscl ]; then
dscl . -delete /users/$TOR_USER dscl . -delete /users/$TOR_USER
else
niutil -destroy . /users/$TOR_USER
fi
## clean up ## clean up
echo ". Cleaning up" echo ". Cleaning up"