X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=src%2Finit%2Fosx105-addusers.sh;h=6bc1cab606cc88f8951316916b8f50c7da88ea86;hb=789cbc8e52da68eba3517b920ef22e000cf3c9fd;hp=b3bf14dd1205014fc7ed2e5760d2d59a963f1a77;hpb=914feba5d54f979cd5d7e69c349c3d01f630042a;p=ossec-hids.git diff --git a/src/init/osx105-addusers.sh b/src/init/osx105-addusers.sh index b3bf14d..6bc1cab 100644 --- a/src/init/osx105-addusers.sh +++ b/src/init/osx105-addusers.sh @@ -1,39 +1,128 @@ -#! /bin/sh +#! /bin/bash # By Spransy, Derek" and Charlie Scott +# +# alterations by bil hays 2013 +# -Switched to bash +# -Added some sanity checks +# -Added routine to find the first 3 contiguous UIDs above 100, +# starting at 600 puts this in user space +# -Added lines to append the ossec users to the group ossec +# so the the list GroupMembership works properly +##### +# This checks for an error and exits with a custom message +# Returns zero on success +# $1 is the message +# $2 is the error code + +if [[ ! -f "/usr/bin/dscl" ]] + then + echo "Error, I have no dscl, dying here"; + exit +fi + +DSCL="/usr/bin/dscl"; + +function check_errm + { + if [[ ${?} != "0" ]] + then + echo "${1}"; + exit ${2}; + fi + } + +# get unique id numbers (uid, gid) that are greater than 100 +unset -v i new_uid new_gid idvar; +declare -i new_uid=0 new_gid=0 i=100 idvar=0; +while [[ $idvar -eq 0 ]]; do + i=$[i+1] + j=$[i+1] + k=$[i+2] + if [[ -z "$(/usr/bin/dscl . -search /Users uid ${i})" ]] && [[ -z "$(/usr/bin/dscl . -search /Groups gid ${i})" ]] && \ + [[ -z "$(/usr/bin/dscl . -search /Users uid ${j})" ]] && [[ -z "$(/usr/bin/dscl . -search /Groups gid ${j})" ]] && \ + [[ -z "$(/usr/bin/dscl . -search /Users uid ${k})" ]] && [[ -z "$(/usr/bin/dscl . -search /Groups gid ${k})" ]]; + then + new_uid=$i + new_gid=$i + idvar=1 + #break + fi +done + +echo "UIDs available are:"; +echo ${new_uid} +echo ${j} +echo ${k} + +# Verify that the uid and gid exist and match +if [[ $new_uid -eq 0 ]] || [[ $new_gid -eq 0 ]]; + then + echo "Getting unique id numbers (uid, gid) failed!"; + exit 1; + fi +if [[ ${new_uid} != ${new_gid} ]] + then + echo "I failed to find matching free uid and gid!"; + exit 5; + fi # Creating the groups. -sudo dscl localhost -create /Local/Default/Groups/ossec -sudo dscl localhost -createprop /Local/Default/Groups/ossec PrimaryGroupID 600 -sudo dscl localhost -createprop /Local/Default/Groups/ossec RealName ossec -sudo dscl localhost -createprop /Local/Default/Groups/ossec RecordName ossec -sudo dscl localhost -createprop /Local/Default/Groups/ossec RecordType: dsRecTypeStandard:Groups -sudo dscl localhost -createprop /Local/Default/Groups/ossec Password "*" +sudo ${DSCL} localhost -create /Local/Default/Groups/ossec +check_errm "Error creating group ossec" "67" +sudo ${DSCL} localhost -createprop /Local/Default/Groups/ossec PrimaryGroupID ${new_gid} +sudo ${DSCL} localhost -createprop /Local/Default/Groups/ossec RealName ossec +sudo ${DSCL} localhost -createprop /Local/Default/Groups/ossec RecordName ossec +sudo ${DSCL} localhost -createprop /Local/Default/Groups/ossec RecordType: dsRecTypeStandard:Groups +sudo ${DSCL} localhost -createprop /Local/Default/Groups/ossec Password "*" # Creating the users. -sudo dscl localhost -create /Local/Default/Users/ossec -sudo dscl localhost -createprop /Local/Default/Users/ossec RecordName ossec -sudo dscl localhost -createprop /Local/Default/Users/ossec RealName "ossecacct" -sudo dscl localhost -createprop /Local/Default/Users/ossec NFSHomeDirectory /var/ossec -sudo dscl localhost -createprop /Local/Default/Users/ossec UniqueID 600 -sudo dscl localhost -createprop /Local/Default/Users/ossec PrimaryGroupID 600 -sudo dscl localhost -createprop /Local/Default/Users/ossec Password "*" - -sudo dscl localhost -create /Local/Default/Users/ossecm -sudo dscl localhost -createprop /Local/Default/Users/ossecm RecordName ossecm -sudo dscl localhost -createprop /Local/Default/Users/ossecm RealName "ossecmacct" -sudo dscl localhost -createprop /Local/Default/Users/ossecm NFSHomeDirectory /var/ossec -sudo dscl localhost -createprop /Local/Default/Users/ossecm UniqueID 601 -sudo dscl localhost -createprop /Local/Default/Users/ossecm PrimaryGroupID 600 -sudo dscl localhost -createprop /Local/Default/Users/ossecm Password "*" - -sudo dscl localhost -create /Local/Default/Users/ossecr -sudo dscl localhost -createprop /Local/Default/Users/ossecr RecordName ossecr -sudo dscl localhost -createprop /Local/Default/Users/ossecr RealName "ossecracct" -sudo dscl localhost -createprop /Local/Default/Users/ossecr NFSHomeDirectory /var/ossec -sudo dscl localhost -createprop /Local/Default/Users/ossecr UniqueID 602 -sudo dscl localhost -createprop /Local/Default/Users/ossecr PrimaryGroupID 600 -sudo dscl localhost -createprop /Local/Default/Users/ossecr Password "*" + +if [[ $(dscl . -read /Users/ossecm) ]] + then + echo "ossecm already exists"; +else + sudo ${DSCL} localhost -create /Local/Default/Users/ossecm + check_errm "Error creating user ossecm" "87" + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossecm RecordName ossecm + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossecm RealName "ossecmacct" + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossecm NFSHomeDirectory /var/ossec + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossecm UniqueID ${j} + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossecm PrimaryGroupID ${new_gid} + sudo ${DSCL} localhost -append /Local/Default/Groups/ossec GroupMembership ossecm + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossecm Password "*" +fi + +if [[ $(dscl . -read /Users/ossecr) ]] + then + echo "ossecr already exists"; +else + sudo ${DSCL} localhost -create /Local/Default/Users/ossecr + check_errm "Error creating user ossecr" "97" + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossecr RecordName ossecr + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossecr RealName "ossecracct" + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossecr NFSHomeDirectory /var/ossec + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossecr UniqueID ${k} + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossecr PrimaryGroupID ${new_gid} + sudo ${DSCL} localhost -append /Local/Default/Groups/ossec GroupMembership ossecr + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossecr Password "*" +fi + +if [[ $(dscl . -read /Users/ossec) ]] + then + echo "ossec already exists"; +else + sudo ${DSCL} localhost -create /Local/Default/Users/ossec + check_errm "Error creating user ossec" "77" + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossec RecordName ossec + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossec RealName "ossecacct" + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossec NFSHomeDirectory /var/ossec + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossec UniqueID ${new_uid} + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossec PrimaryGroupID ${new_gid} + sudo ${DSCL} localhost -append /Local/Default/Groups/ossec GroupMembership ossec + sudo ${DSCL} localhost -createprop /Local/Default/Users/ossec Password "*" +fi +