|
|
@@ -0,0 +1,169 @@
|
|
|
+#!/bin/bash
|
|
|
+# info: rebuild system user
|
|
|
+# options: user [full]
|
|
|
+#
|
|
|
+# The function rebuilds system user account.
|
|
|
+
|
|
|
+
|
|
|
+#----------------------------------------------------------#
|
|
|
+# Variable&Function #
|
|
|
+#----------------------------------------------------------#
|
|
|
+
|
|
|
+# Argument defenition
|
|
|
+user=$1
|
|
|
+full=${2-no}
|
|
|
+
|
|
|
+# Includes
|
|
|
+source $VESTA/conf/vesta.conf
|
|
|
+source $VESTA/func/shared.sh
|
|
|
+
|
|
|
+
|
|
|
+#----------------------------------------------------------#
|
|
|
+# Verifications #
|
|
|
+#----------------------------------------------------------#
|
|
|
+
|
|
|
+check_args '1' "$#" 'user [full]'
|
|
|
+validate_format 'user' 'full'
|
|
|
+is_object_valid 'user' 'USER' "$user"
|
|
|
+is_object_unsuspended 'user' 'USER' "$user"
|
|
|
+
|
|
|
+
|
|
|
+#----------------------------------------------------------#
|
|
|
+# Action #
|
|
|
+#----------------------------------------------------------#
|
|
|
+
|
|
|
+# Get user variables
|
|
|
+source $USER_DATA/user.conf
|
|
|
+
|
|
|
+# Rebuild user
|
|
|
+shell=$(/usr/bin/chsh --list-shells | grep -w "$SHELL" |head -n1)
|
|
|
+/usr/sbin/adduser "$user" -s "$shell" -c "$CONTACT" -m -d "$HOMEDIR/$user" \
|
|
|
+ &>/dev/null
|
|
|
+
|
|
|
+# Change password
|
|
|
+#/usr/sbin/usermod -p $MD5 $user
|
|
|
+shadow=/tmp/shadow
|
|
|
+shdw=$(grep ^$user: $shadow)
|
|
|
+shdw3=$(echo "$shdw" | cut -f3 -d :)
|
|
|
+shdw4=$(echo "$shdw" | cut -f4 -d :)
|
|
|
+shdw5=$(echo "$shdw" | cut -f5 -d :)
|
|
|
+shdw6=$(echo "$shdw" | cut -f6 -d :)
|
|
|
+shdw7=$(echo "$shdw" | cut -f7 -d :)
|
|
|
+shdw8=$(echo "$shdw" | cut -f8 -d :)
|
|
|
+shdw9=$(echo "$shdw" | cut -f9 -d :)
|
|
|
+chmod u+w $shadow
|
|
|
+sed -i "/^$user:*/d" $shadow
|
|
|
+echo "$user:$MD5:$shdw3:$shdw4:$shdw5:$shdw6:$shdw7:$shdw8:$shdw9" >> $shadow
|
|
|
+chmod u-w $shadow
|
|
|
+
|
|
|
+# Change shell
|
|
|
+/usr/bin/chsh -s "$shell" "$user" &>/dev/null
|
|
|
+
|
|
|
+# Building directory tree
|
|
|
+mkdir -p $HOMEDIR/$user
|
|
|
+chmod -R a+x $HOMEDIR/$user
|
|
|
+mkdir -p $HOMEDIR/$user/conf
|
|
|
+chown $user:$user $HOMEDIR/$user/conf
|
|
|
+
|
|
|
+if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
|
|
|
+ mkdir -p $HOMEDIR/$user/conf/web
|
|
|
+ mkdir -p $HOMEDIR/$user/web
|
|
|
+ mkdir -p $HOMEDIR/$user/tmp
|
|
|
+ chmod 751 $HOMEDIR/$user/conf/web
|
|
|
+ chmod 751 $HOMEDIR/$user/web
|
|
|
+ chmod 777 $HOMEDIR/$user/tmp
|
|
|
+ chown $user:$user $HOMEDIR/$user/web
|
|
|
+ if [ "$full" = 'yes' ]; then
|
|
|
+ $BIN/v_rebuild_web_domains $user
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
+if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
|
|
|
+ mkdir -p $HOMEDIR/$user/conf/mail
|
|
|
+ mkdir -p $HOMEDIR/$user/mail
|
|
|
+ chmod 751 $HOMEDIR/$user/mail
|
|
|
+ chmod 751 $HOMEDIR/$user/conf/mail
|
|
|
+ if [ "$full" = 'yes' ]; then
|
|
|
+ $BIN/v_rebuild_mail_domains $user
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
+if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
|
|
|
+ mkdir -p $HOMEDIR/$user/conf/dns
|
|
|
+ chmod 751 $HOMEDIR/$user/conf/dns
|
|
|
+ if [ "$full" = 'yes' ]; then
|
|
|
+ $BIN/v_rebuild_dns_domains $user
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
+if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
|
|
|
+ if [ "$full" = 'yes' ]; then
|
|
|
+ $BIN/v_rebuild_databases $user
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
+if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then
|
|
|
+ if [ "$full" = 'yes' ]; then
|
|
|
+ $BIN/v_rebuild_cron_jobs $user
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
+
|
|
|
+#----------------------------------------------------------#
|
|
|
+# Vesta #
|
|
|
+#----------------------------------------------------------#
|
|
|
+
|
|
|
+# Creating configuration files and pipes
|
|
|
+chmod 770 $USER_DATA
|
|
|
+touch $USER_DATA/backup.conf
|
|
|
+chmod 660 $USER_DATA/backup.conf
|
|
|
+touch $USER_DATA/history.log
|
|
|
+chmod 660 $USER_DATA/history.log
|
|
|
+touch $USER_DATA/stats.log
|
|
|
+chmod 660 $USER_DATA/stats.log
|
|
|
+
|
|
|
+sed -i "/ $user$/d" $VESTA/data/queue/disk.pipe
|
|
|
+echo "v_update_user_disk $user" >> $VESTA/data/queue/disk.pipe
|
|
|
+
|
|
|
+if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
|
|
|
+ mkdir -p $USER_DATA/ssl
|
|
|
+ chmod 770 $USER_DATA/ssl
|
|
|
+ touch $USER_DATA/web.conf
|
|
|
+ chmod 660 $USER_DATA/web.conf
|
|
|
+ if [ "$(grep -w $user $VESTA/data/queue/traffic.pipe)" ]; then
|
|
|
+ echo "$BIN/v_update_web_domains_traff $user" \
|
|
|
+ >> $VESTA/data/queue/traffic.pipe
|
|
|
+ fi
|
|
|
+ echo "v_update_web_domains_disk $user" >> $VESTA/data/queue/disk.pipe
|
|
|
+fi
|
|
|
+
|
|
|
+if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
|
|
|
+ mkdir -p $USER_DATA/dns
|
|
|
+ chmod 770 $USER_DATA/dns
|
|
|
+ touch $USER_DATA/dns.conf
|
|
|
+ chmod 660 $USER_DATA/dns.conf
|
|
|
+fi
|
|
|
+
|
|
|
+if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
|
|
|
+ mkdir -p $USER_DATA/mail
|
|
|
+ chmod 770 $USER_DATA/mail
|
|
|
+ touch $USER_DATA/mail.conf
|
|
|
+ chmod 660 $USER_DATA/mail.conf
|
|
|
+ echo "v_update_mail_domains_disk $user" >> $VESTA/data/queue/disk.pipe
|
|
|
+fi
|
|
|
+
|
|
|
+if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
|
|
|
+ touch $USER_DATA/db.conf
|
|
|
+ chmod 660 $USER_DATA/db.conf
|
|
|
+ echo "v_update_datbases_disk $user" >> $VESTA/data/queue/disk.pipe
|
|
|
+fi
|
|
|
+
|
|
|
+if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then
|
|
|
+ touch $USER_DATA/cron.conf
|
|
|
+ chmod 660 $USER_DATA/cron.conf
|
|
|
+fi
|
|
|
+
|
|
|
+# Logging
|
|
|
+log_event "$OK" "$EVENT"
|
|
|
+
|
|
|
+exit
|