4
0

add_group_user 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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. netbsd)
  59. echo useradd -g $gid $uid > /dev/stderr
  60. rc=`useradd -g $gid $uid; echo $?`
  61. ;;
  62. *)
  63. echo useradd -r -g $gid $uid > /dev/stderr
  64. rc=`useradd -r -g $gid $uid; echo $?`
  65. ;;
  66. esac
  67. echo $rc
  68. }
  69. #-------------------------
  70. # Add the specified group
  71. #-------------------------
  72. add_group(){
  73. rc=`group_exists`
  74. if test $rc -eq 0; then
  75. echo "Group $gid already exists" > /dev/stderr
  76. echo 0
  77. return
  78. fi
  79. case $dist in
  80. aix)
  81. echo mkgroup $gid > /dev/stderr
  82. rc=`mkgroup "$gid"; echo $?`
  83. ;;
  84. hpux|solaris)
  85. echo groupadd $gid > /dev/stderr
  86. rc=`groupadd "$gid"; echo $?`
  87. ;;
  88. osx)
  89. newid=`dscl . -list /Groups gid | tr -s ' ' | cut -d' ' -f2 | sort -n | tail -1`
  90. newid=`expr 1 + $newid`
  91. echo dscl . -create /Groups/$gid gid $newid > /dev/stderr
  92. rc=`dscl . -create /Groups/$gid gid $newid; echo $?`
  93. ;;
  94. freebsd)
  95. echo pw add group $gid > /dev/stderr
  96. rc=`pw add group $gid; echo $?`
  97. ;;
  98. netbsd)
  99. echo groupadd $gid > /dev/stderr
  100. rc=`groupadd $gid; echo $?`
  101. ;;
  102. *)
  103. echo groupadd -r $gid > /dev/stderr
  104. rc=`groupadd -r $gid; echo $?`
  105. ;;
  106. esac
  107. echo $rc
  108. }
  109. rc=`add_group`
  110. if test $rc -ne 0; then
  111. exit 1;
  112. fi
  113. rc=`add_user`
  114. exit $rc