add_group_user 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #!/bin/sh
  2. #----------------------
  3. # Initialize variables
  4. #----------------------
  5. dist="$1"
  6. uid="$2"
  7. gid="$3"
  8. rc=0
  9. #-------------------------------------
  10. # Check if the specified group exists
  11. #-------------------------------------
  12. group_exists(){
  13. case $dist in
  14. osx) rc=`dscl . -read /Groups/$gid >/dev/null 2>&1; echo $?` ;;
  15. hpux) rc=`grget -n $gid >/dev/null 2>&1; echo $?` ;;
  16. aix) rc=`lsgroup -a $gid >/dev/null 2>&1; echo $?` ;;
  17. *) rc=`getent group $gid > /dev/null 2>&1; echo $?` ;;
  18. esac
  19. echo $rc
  20. }
  21. #------------------------
  22. # Add the specified user
  23. #------------------------
  24. add_user(){
  25. rc=`id "$uid" > /dev/null 2>&1; echo $?`
  26. if test $rc -eq 0; then
  27. echo "User $uid already exists" > /dev/stderr
  28. echo 0
  29. return
  30. fi
  31. case $dist in
  32. aix)
  33. echo useradd -g $gid $uid > /dev/stderr
  34. rc=`useradd -g $gid $uid; echo $?`
  35. ;;
  36. hpux|solaris)
  37. echo useradd -m -g $gid $uid > /dev/stderr
  38. rc=`useradd -m -g $gid $uid; echo $?`
  39. ;;
  40. osx)
  41. newid=`dscl . -list /Users UniqueID | tr -s ' ' | cut -d' ' -f2 | sort -n | tail -1`
  42. newid=`expr 1 + $newid`
  43. echo dscl . -create /Users/$uid > /dev/stderr
  44. dscl . -create /Users/$uid
  45. echo dscl . -create /Users/$uid UniqueID $newid > /dev/stderr
  46. dscl . -create /Users/$uid UniqueID $newid
  47. echo dscl . -create /Users/$uid UserShell /usr/bin/false > /dev/stderr
  48. dscl . -create /Users/$uid UserShell /usr/bin/false
  49. echo dscl . -create /Users/$uid PrimaryGroupID 20 > /dev/stderr
  50. dscl . -create /Users/$uid PrimaryGroupID 20
  51. echo dscl . -append /Groups/$gid GroupMembership $uid > /dev/stderr
  52. rc=`dscl . -append /Groups/$gid GroupMembership $uid; echo $?`
  53. ;;
  54. freebsd)
  55. echo pw add user $uid -g $gid -s /usr/bin/false > /dev/stderr
  56. rc=`pw add user $uid -g $gid -s /usr/bin/false; echo $?`
  57. ;;
  58. *)
  59. echo useradd -r -g $gid $uid > /dev/stderr
  60. rc=`useradd -r -g $gid $uid; echo $?`
  61. ;;
  62. esac
  63. echo $rc
  64. }
  65. #-------------------------
  66. # Add the specified group
  67. #-------------------------
  68. add_group(){
  69. rc=`group_exists`
  70. if test $rc -eq 0; then
  71. echo "Group $gid already exists" > /dev/stderr
  72. echo 0
  73. return
  74. fi
  75. case $dist in
  76. aix)
  77. echo mkgroup $gid > /dev/stderr
  78. rc=`mkgroup "$gid"; echo $?`
  79. ;;
  80. hpux|solaris)
  81. echo groupadd $gid > /dev/stderr
  82. rc=`groupadd "$gid"; echo $?`
  83. ;;
  84. osx)
  85. newid=`dscl . -list /Groups gid | tr -s ' ' | cut -d' ' -f2 | sort -n | tail -1`
  86. newid=`expr 1 + $newid`
  87. echo dscl . -create /Groups/$gid gid $newid > /dev/stderr
  88. rc=`dscl . -create /Groups/$gid gid $newid; echo $?`
  89. ;;
  90. freebsd)
  91. echo pw add group $gid > /dev/stderr
  92. rc=`pw add group $gid; echo $?`
  93. ;;
  94. *)
  95. echo groupadd -r $gid > /dev/stderr
  96. rc=`groupadd -r $gid; echo $?`
  97. ;;
  98. esac
  99. echo $rc
  100. }
  101. rc=`add_group`
  102. if test $rc -ne 0; then
  103. exit 1;
  104. fi
  105. rc=`add_user`
  106. exit $rc