v-rebuild-user 4.5 KB

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