add_group_user 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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)
  37. echo useradd -m -g $gid $uid > /dev/stderr
  38. rc=`useradd -m -g $gid $uid; echo $?`
  39. ;;
  40. solaris)
  41. echo useradd -m -d /export/home/$uid -g $gid $uid > /dev/stderr
  42. rc=`useradd -m -d /export/home/$uid -g $gid $uid; echo $?`
  43. ;;
  44. osx)
  45. newid=`dscl . -list /Users UniqueID | tr -s ' ' | cut -d' ' -f2 | sort -n | tail -1`
  46. newid=`expr 1 + $newid`
  47. echo dscl . -create /Users/$uid > /dev/stderr
  48. dscl . -create /Users/$uid
  49. echo dscl . -create /Users/$uid UniqueID $newid > /dev/stderr
  50. dscl . -create /Users/$uid UniqueID $newid
  51. echo dscl . -create /Users/$uid UserShell /usr/bin/false > /dev/stderr
  52. dscl . -create /Users/$uid UserShell /usr/bin/false
  53. echo dscl . -create /Users/$uid PrimaryGroupID 20 > /dev/stderr
  54. dscl . -create /Users/$uid PrimaryGroupID 20
  55. echo dscl . -append /Groups/$gid GroupMembership $uid > /dev/stderr
  56. rc=`dscl . -append /Groups/$gid GroupMembership $uid; echo $?`
  57. ;;
  58. freebsd)
  59. echo pw add user $uid -g $gid -s /usr/bin/false > /dev/stderr
  60. rc=`pw add user $uid -g $gid -s /usr/bin/false; echo $?`
  61. ;;
  62. netbsd|openbsd)
  63. echo useradd -g $gid $uid > /dev/stderr
  64. rc=`useradd -g $gid $uid; echo $?`
  65. ;;
  66. *)
  67. echo useradd -r -g $gid $uid > /dev/stderr
  68. rc=`useradd -r -g $gid $uid; echo $?`
  69. ;;
  70. esac
  71. echo $rc
  72. }
  73. #-------------------------
  74. # Add the specified group
  75. #-------------------------
  76. add_group(){
  77. rc=`group_exists`
  78. if test $rc -eq 0; then
  79. echo "Group $gid already exists" > /dev/stderr
  80. echo 0
  81. return
  82. fi
  83. case $dist in
  84. aix)
  85. echo mkgroup $gid > /dev/stderr
  86. rc=`mkgroup "$gid"; echo $?`
  87. ;;
  88. hpux|solaris)
  89. echo groupadd $gid > /dev/stderr
  90. rc=`groupadd "$gid"; echo $?`
  91. ;;
  92. osx)
  93. newid=`dscl . -list /Groups gid | tr -s ' ' | cut -d' ' -f2 | sort -n | tail -1`
  94. newid=`expr 1 + $newid`
  95. echo dscl . -create /Groups/$gid gid $newid > /dev/stderr
  96. rc=`dscl . -create /Groups/$gid gid $newid; echo $?`
  97. ;;
  98. freebsd)
  99. echo pw add group $gid > /dev/stderr
  100. rc=`pw add group $gid; echo $?`
  101. ;;
  102. netbsd|openbsd)
  103. echo groupadd $gid > /dev/stderr
  104. rc=`groupadd $gid; echo $?`
  105. ;;
  106. *)
  107. echo groupadd -r $gid > /dev/stderr
  108. rc=`groupadd -r $gid; echo $?`
  109. ;;
  110. esac
  111. echo $rc
  112. }
  113. rc=`add_group`
  114. if test $rc -ne 0; then
  115. exit 1;
  116. fi
  117. rc=`add_user`
  118. exit $rc