v_rebuild_user 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. #!/bin/bash
  2. # info: rebuild system user
  3. # options: user [full]
  4. #
  5. # The function rebuilds system user account.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument defenition
  10. user=$1
  11. full=${2-no}
  12. # Includes
  13. source $VESTA/conf/vesta.conf
  14. source $VESTA/func/main.sh
  15. #----------------------------------------------------------#
  16. # Verifications #
  17. #----------------------------------------------------------#
  18. check_args '1' "$#" 'user [full]'
  19. validate_format 'user' 'full'
  20. is_object_valid 'user' 'USER' "$user"
  21. is_object_unsuspended 'user' 'USER' "$user"
  22. #----------------------------------------------------------#
  23. # Action #
  24. #----------------------------------------------------------#
  25. # Get user variables
  26. source $USER_DATA/user.conf
  27. # Rebuild user
  28. shell=$(/usr/bin/chsh --list-shells | grep -w "$SHELL" |head -n1)
  29. /usr/sbin/adduser "$user" -s "$shell" -c "$CONTACT" -m -d "$HOMEDIR/$user" \
  30. &>/dev/null
  31. # Change password
  32. #/usr/sbin/usermod -p $MD5 $user
  33. shadow=/tmp/shadow
  34. shdw=$(grep ^$user: $shadow)
  35. shdw3=$(echo "$shdw" | cut -f3 -d :)
  36. shdw4=$(echo "$shdw" | cut -f4 -d :)
  37. shdw5=$(echo "$shdw" | cut -f5 -d :)
  38. shdw6=$(echo "$shdw" | cut -f6 -d :)
  39. shdw7=$(echo "$shdw" | cut -f7 -d :)
  40. shdw8=$(echo "$shdw" | cut -f8 -d :)
  41. shdw9=$(echo "$shdw" | cut -f9 -d :)
  42. chmod u+w $shadow
  43. sed -i "/^$user:*/d" $shadow
  44. echo "$user:$MD5:$shdw3:$shdw4:$shdw5:$shdw6:$shdw7:$shdw8:$shdw9" >> $shadow
  45. chmod u-w $shadow
  46. # Change shell
  47. /usr/bin/chsh -s "$shell" "$user" &>/dev/null
  48. # Building directory tree
  49. mkdir -p $HOMEDIR/$user
  50. chmod -R a+x $HOMEDIR/$user
  51. mkdir -p $HOMEDIR/$user/conf
  52. chown $user:$user $HOMEDIR/$user/conf
  53. if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
  54. mkdir -p $HOMEDIR/$user/conf/web
  55. mkdir -p $HOMEDIR/$user/web
  56. mkdir -p $HOMEDIR/$user/tmp
  57. chmod 751 $HOMEDIR/$user/conf/web
  58. chmod 751 $HOMEDIR/$user/web
  59. chmod 777 $HOMEDIR/$user/tmp
  60. chown $user:$user $HOMEDIR/$user/web
  61. if [ "$full" = 'yes' ]; then
  62. $BIN/v_rebuild_web_domains $user
  63. fi
  64. fi
  65. if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
  66. mkdir -p $HOMEDIR/$user/conf/mail
  67. mkdir -p $HOMEDIR/$user/mail
  68. chmod 751 $HOMEDIR/$user/mail
  69. chmod 751 $HOMEDIR/$user/conf/mail
  70. if [ "$full" = 'yes' ]; then
  71. $BIN/v_rebuild_mail_domains $user
  72. fi
  73. fi
  74. if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
  75. mkdir -p $HOMEDIR/$user/conf/dns
  76. chmod 751 $HOMEDIR/$user/conf/dns
  77. if [ "$full" = 'yes' ]; then
  78. $BIN/v_rebuild_dns_domains $user
  79. fi
  80. fi
  81. if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
  82. if [ "$full" = 'yes' ]; then
  83. $BIN/v_rebuild_databases $user
  84. fi
  85. fi
  86. if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then
  87. if [ "$full" = 'yes' ]; then
  88. $BIN/v_rebuild_cron_jobs $user
  89. fi
  90. fi
  91. #----------------------------------------------------------#
  92. # Vesta #
  93. #----------------------------------------------------------#
  94. # Creating configuration files and pipes
  95. chmod 770 $USER_DATA
  96. touch $USER_DATA/backup.conf
  97. chmod 660 $USER_DATA/backup.conf
  98. touch $USER_DATA/history.log
  99. chmod 660 $USER_DATA/history.log
  100. touch $USER_DATA/stats.log
  101. chmod 660 $USER_DATA/stats.log
  102. sed -i "/ $user$/d" $VESTA/data/queue/disk.pipe
  103. echo "v_update_user_disk $user" >> $VESTA/data/queue/disk.pipe
  104. if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
  105. mkdir -p $USER_DATA/ssl
  106. chmod 770 $USER_DATA/ssl
  107. touch $USER_DATA/web.conf
  108. chmod 660 $USER_DATA/web.conf
  109. if [ "$(grep -w $user $VESTA/data/queue/traffic.pipe)" ]; then
  110. echo "$BIN/v_update_web_domains_traff $user" \
  111. >> $VESTA/data/queue/traffic.pipe
  112. fi
  113. echo "v_update_web_domains_disk $user" >> $VESTA/data/queue/disk.pipe
  114. fi
  115. if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
  116. mkdir -p $USER_DATA/dns
  117. chmod 770 $USER_DATA/dns
  118. touch $USER_DATA/dns.conf
  119. chmod 660 $USER_DATA/dns.conf
  120. fi
  121. if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
  122. mkdir -p $USER_DATA/mail
  123. chmod 770 $USER_DATA/mail
  124. touch $USER_DATA/mail.conf
  125. chmod 660 $USER_DATA/mail.conf
  126. echo "v_update_mail_domains_disk $user" >> $VESTA/data/queue/disk.pipe
  127. fi
  128. if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
  129. touch $USER_DATA/db.conf
  130. chmod 660 $USER_DATA/db.conf
  131. echo "v_update_datbases_disk $user" >> $VESTA/data/queue/disk.pipe
  132. fi
  133. if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then
  134. touch $USER_DATA/cron.conf
  135. chmod 660 $USER_DATA/cron.conf
  136. fi
  137. # Logging
  138. log_event "$OK" "$EVENT"
  139. exit