[BACK]Return to user_manager.sh CVS log [TXT][DIR] Up to [local] / botnow

Annotation of botnow/user_manager.sh, Revision 1.1

1.1     ! bountyht    1: #!/bin/sh
        !             2:
        !             3: htdocs_chroot_path="/home/www/htdocs"
        !             4: log_path="/var/log/user_manager.log"
        !             5: lock_list="jrmu,fizi,baytuch,vasya,gry,brk,mailman"
        !             6:
        !             7: user_exists="NO"
        !             8: group_exists="NO"
        !             9: target_user_id=""
        !            10: target_group_id=""
        !            11: error_trig="NO"
        !            12:
        !            13:
        !            14: check_exists() {
        !            15:   user_exists=NO
        !            16:   group_exists=NO
        !            17:   if [ ! -z "$(grep "^$1:.*$" /etc/passwd)" ]; then
        !            18:     user_exists="YES"
        !            19:   fi
        !            20:   if [ ! -z "$(grep "^$1:.*$" /etc/group)" ]; then
        !            21:     group_exists="YES"
        !            22:   fi
        !            23: }
        !            24:
        !            25: create_user() {
        !            26:   groupadd -ov -g $3 $1
        !            27:   useradd -v -m -d /home/$1 -g $3 -s /bin/ksh -u $2 $1
        !            28:   passwd $1
        !            29: }
        !            30:
        !            31: delete_user() {
        !            32:   userdel -rv $1
        !            33:   groupdel -v $1
        !            34: }
        !            35:
        !            36: logger() {
        !            37:   if [ ! -f $log_path ]; then
        !            38:     touch $log_path
        !            39:   fi
        !            40:   mess=[$(date '+%Y-%m-%d %H:%M:%S')]" "$1
        !            41:   echo $mess >> $log_path
        !            42:   echo $mess
        !            43: }
        !            44:
        !            45: get_target_ids() {
        !            46:   if [ $user_exists == "YES" ]; then
        !            47:     target_user_id=$(grep "^$1" /etc/passwd | sed -r -e 's|^.*:([0-9]+):[0-9]+:.*$|\1|g')
        !            48:     target_group_id=$(grep "^$1" /etc/passwd | sed -r -e 's|^.*:[0-9]+:([0-9]+):.*$|\1|g')
        !            49:   else
        !            50:     users_ids=$(cat /etc/passwd | sed -r -e 's|^.*:([0-9]+:[0-9]+):.*$|\1|g')
        !            51:     tmp_last_user_id=0
        !            52:     for line in $users_ids; do
        !            53:       tmp_user_id=${line%:*}
        !            54:       tmp_group_id=${line#*:}
        !            55:       if [ ${#tmp_user_id} -eq 4 ] && [ ${#tmp_group_id} -eq 4 ]; then
        !            56:         if [ $tmp_user_id -eq $tmp_group_id ]; then
        !            57:           if [ $tmp_user_id -gt $tmp_last_user_id ]; then
        !            58:             tmp_last_user_id=$tmp_user_id
        !            59:           fi
        !            60:         fi
        !            61:       fi
        !            62:     done
        !            63:     target_user_id=$tmp_last_user_id
        !            64:     target_group_id=$tmp_last_user_id
        !            65:   fi
        !            66:   target_user_id=$(echo $target_user_id | sed 's/[^0-9]//g')
        !            67:   target_group_id=$(echo $target_group_id | sed 's/[^0-9]//g')
        !            68:   if [ $user_exists == "NO" ] && [ ! -z $target_user_id ] && [ ! -z $target_group_id ]; then
        !            69:     target_user_id=$((target_user_id + 1))
        !            70:     target_group_id=$((target_group_id + 1))
        !            71:   fi
        !            72: }
        !            73:
        !            74: user_tree_config() {
        !            75:   if [ -d /home/$1 ]; then
        !            76:     chmod 700 /home/$1
        !            77:     chmod 700 /home/$1/.ssh
        !            78:     chmod 600 /home/$1/{.Xdefaults,.cshrc,.cvsrc,.login,.mailrc,.profile}
        !            79:     logger "TREE CONFIG: was configured home dir"
        !            80:     if [ -d $htdocs_chroot_path ]; then
        !            81:       mkdir $htdocs_chroot_path/$1
        !            82:       chown $1:$1 $htdocs_chroot_path/$1
        !            83:       ln -s $htdocs_chroot_path/$1 /home/$1/htdocs
        !            84:       chown $1:$1 /home/$1/htdocs
        !            85:       logger "TREE CONFIG: was configured htdocs dir"
        !            86:     else
        !            87:       logger "TREE CONFIG: htdocs chroot not found!"
        !            88:     fi
        !            89:   else
        !            90:     logger "TREE CONFIG: home folder not found!"
        !            91:   fi
        !            92: }
        !            93:
        !            94: user_tree_delete() {
        !            95:   if [ -d /home/$1 ]; then
        !            96:     if [ -d /home/$1/htdocs ]; then
        !            97:       rm -rf /home/$1/htdocs
        !            98:     fi
        !            99:     if [ -d $htdocs_chroot_path/$1 ]; then
        !           100:       rm -rf $htdocs_chroot_path/$1
        !           101:     fi
        !           102:     if [ ! -d /home/$1/htdocs ] && [ ! -d $htdocs_chroot_path/$1 ]; then
        !           103:       logger "TREE DELETE: was deteled htdocs dir"
        !           104:     else
        !           105:       error_trig="YES"
        !           106:       logger "TREE DELETE: failed to delete folder tree!"
        !           107:     fi
        !           108:   else
        !           109:     error_trig="YES"
        !           110:     logger "TREE DELETE: home folder not found!"
        !           111:   fi
        !           112: }
        !           113:
        !           114: do_create_user() {
        !           115:   logger "WORKER: create a new user..."
        !           116:   if [ -z $1 ]; then
        !           117:     logger "WORKER: you must provide username!"
        !           118:   else
        !           119:     check_exists $1
        !           120:     if [ $user_exists == "YES" ]; then
        !           121:       logger "WORKER: user $1 already exists"
        !           122:     else
        !           123:       get_target_ids $1
        !           124:       if [ ${#target_user_id} -eq 4 ] && [ ${#target_group_id} -eq 4 ]; then
        !           125:         logger "WORKER: process of creating a new user has started"
        !           126:         logger "WORKER: -> login - $1"
        !           127:         logger "WORKER: -> user_id - $target_user_id"
        !           128:         logger "WORKER: -> group_id - $target_group_id"
        !           129:         create_user $1 $target_user_id $target_group_id
        !           130:         check_exists $1
        !           131:         if [ $user_exists == "YES" ]; then
        !           132:           logger "WORKER: user created successfully"
        !           133:           logger "WORKER: user folder tree configuration..."
        !           134:           user_tree_config $1
        !           135:         else
        !           136:           logger "WORKER: user creation failure!"
        !           137:         fi
        !           138:       else
        !           139:         logger "WORKER: error generating identifiers!"
        !           140:       fi
        !           141:     fi
        !           142:   fi
        !           143: }
        !           144:
        !           145: do_delete_user() {
        !           146:   logger "WORKER: removing a user account..."
        !           147:   if [ -z $1 ]; then
        !           148:     logger "WORKER: you must provide username!"
        !           149:   else
        !           150:     check_exists $1
        !           151:     if [ $user_exists == "NO" ]; then
        !           152:       logger "WORKER: user $1 not found!"
        !           153:     else
        !           154:       get_target_ids $1
        !           155:       if [ ${#target_user_id} -ne 4 ]; then
        !           156:         logger "WORKER: you cannot delete the service user!"
        !           157:       else
        !           158:         deny_del="NO"
        !           159:         for tmp_user_name in $(echo $lock_list | tr "," "\n"); do
        !           160:           if [ $1 == $tmp_user_name ]; then
        !           161:             deny_del="YES"
        !           162:             break
        !           163:           fi
        !           164:         done
        !           165:         if [ $deny_del == "NO" ]; then
        !           166:           logger "WORKER: deleting a user's folder tree..."
        !           167:           user_tree_delete $1
        !           168:           if [ $error_trig == "NO" ]; then
        !           169:             logger "WORKER: deleting a user account..."
        !           170:             delete_user $1
        !           171:             check_exists $1
        !           172:             if [ $user_exists == "NO" ]; then
        !           173:               logger "WORKER: user account of $1 deleted"
        !           174:             else
        !           175:               logger "WORKER: failed to delete account!"
        !           176:             fi
        !           177:           fi
        !           178:         else
        !           179:           logger "WORKER: the deletion of this user is blocked!"
        !           180:         fi
        !           181:       fi
        !           182:     fi
        !           183:   fi
        !           184: }
        !           185:
        !           186: if [ $(whoami) == "root" ]; then
        !           187:   case "$1" in
        !           188:     create)
        !           189:     do_create_user $2
        !           190:     ;;
        !           191:     delete)
        !           192:     do_delete_user $2
        !           193:     ;;
        !           194:     *)
        !           195:     logger "SELECTOR: unknown command"
        !           196:     ;;
        !           197:   esac
        !           198:   exit 0
        !           199: else
        !           200:   echo "must be run as root!"
        !           201:   exit 1
        !           202: fi

CVSweb