addsysuser 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/bin/sh
  2. #
  3. # Original adduser 05 Feb 2002 by Jon L. Gardner
  4. #
  5. # Modified for Tor installer by Nick Mathewson
  6. # 2007-06-12 Modified for leopard by Andrew Lewman
  7. # Copyright (c) 2007 Andrew Lewman
  8. #
  9. ROOTPROP=/
  10. if [ "`whoami`" != "root" ]; then
  11. echo "You must be root to execute this script."
  12. exit
  13. fi
  14. if [ "x$3" = "x" ]; then
  15. echo 'Usage: addsysuser <username> "<full name>" <homedir>'
  16. exit 0
  17. fi
  18. username=$1
  19. realname=$2
  20. homedir=$3
  21. if [ -x /usr/bin/dscl ]; then
  22. # Determine the gid of the daemon group
  23. gid=`dscl . -read /groups/daemon gid`
  24. if [ "x`dscl . -list /users|cut -f2 -d' '|grep $username`" != "x" ]; then
  25. echo The account $username already exists.
  26. exit 0
  27. fi
  28. # home is the local path to the home directory
  29. home=/Users/$username
  30. echo Creating account for $username...
  31. dscl . -create /users/$username
  32. dscl . -create /users/$username _writers_tim_passwd $username
  33. dscl . -create /users/$username realname $realname
  34. dscl . -create /users/$username _writers_passwd $username
  35. dscl . -create /users/$username gid $gid
  36. dscl . -create /users/$username home $homedir
  37. dscl . -create /users/$username name $username
  38. dscl . -create /users/$username passwd '*'
  39. dscl . -create /users/$username shell /dev/null
  40. else
  41. # Determine the gid of the daemon group
  42. gid=`niutil -readprop $ROOTPROP /groups/daemon gid`
  43. if [ "x`niutil -list $ROOTPROP /users|cut -f2 -d' '|grep $username`" != "x" ]; then
  44. echo The account $username already exists.
  45. exit 0
  46. fi
  47. # home is the local path to the home directory
  48. home=/Users/$username
  49. # defhome is what goes into NetInfo
  50. defhome="/Network/Servers/MyServer/Users"
  51. #echo "Determining next available system uid (please be patient)..."
  52. # Uids over 500 are for system users.
  53. uiddef=`nidump passwd / | cut -d: -f3 | sort -n | grep -v '^[56789]..' |grep -v '^....$' | tail -n 1`
  54. uiddef=`echo $uiddef + 1 |bc`
  55. echo Creating account for $username...
  56. niutil -create $ROOTPROP /users/$username
  57. niutil -createprop $ROOTPROP /users/$username _writers_tim_passwd $username
  58. niutil -createprop $ROOTPROP /users/$username realname $realname
  59. niutil -createprop $ROOTPROP /users/$username _writers_passwd $username
  60. niutil -createprop $ROOTPROP /users/$username uid $uiddef
  61. #niutil -createprop $ROOTPROP /users/$username home_loc "<home_dir><url>afp://afp.server.com/Users/</url><path>$username</path></home_dir>"
  62. niutil -createprop $ROOTPROP /users/$username gid $gid
  63. niutil -createprop $ROOTPROP /users/$username home $homedir
  64. niutil -createprop $ROOTPROP /users/$username name $username
  65. niutil -createprop $ROOTPROP /users/$username passwd '*'
  66. niutil -createprop $ROOTPROP /users/$username shell /dev/null
  67. fi