v-add-sys-quota 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #!/bin/bash
  2. # info: add system quota
  3. # options: NONE
  4. #
  5. # The script enables filesystem quota on /home partition
  6. #----------------------------------------------------------#
  7. # Variable & Function #
  8. #----------------------------------------------------------#
  9. # Includes
  10. source $VESTA/func/main.sh
  11. source $VESTA/conf/vesta.conf
  12. #----------------------------------------------------------#
  13. # Verifications #
  14. #----------------------------------------------------------#
  15. # Checking quota package
  16. quota=$(which --skip-alias --skip-functions quota 2>/dev/null)
  17. if [ $? -ne 0 ]; then
  18. if [ -e "/etc/redhat-release" ]; then
  19. yum -y install quota >/dev/null 2>&1
  20. check_result $? "quota package installation failed" $E_UPDATE
  21. else
  22. export DEBIAN_FRONTEND=noninteractive
  23. apt-get -y install quota >/dev/null 2>&1
  24. check_result $? "quota package installation failed" $E_UPDATE
  25. fi
  26. fi
  27. #----------------------------------------------------------#
  28. # Action #
  29. #----------------------------------------------------------#
  30. # Adding group and user quota on /home partition
  31. mnt=$(df -P /home | awk '{print $6}' | tail -n1)
  32. lnr=$(cat -n /etc/fstab | grep -v "#" | awk '{print $1,$3}' | grep "$mnt$" | cut -f 1 -d ' ')
  33. opt=$(sed -n ${lnr}p /etc/fstab | awk '{print $4}')
  34. fnd='usrquota\|grpquota\|usrjquota=aquota.user\|grpjquota=aquota.group\|jqfmt=vfsv0'
  35. if [ $(echo $opt | tr ',' '\n' | grep -x $fnd | wc -l) -ne 5 ]; then
  36. old=$(echo $(echo $opt | tr ',' '\n' | grep -v 'usrquota\|grpquota\|usrjquota=\|grpjquota=\|jqfmt=') | tr ' ' ',')
  37. new='usrquota,grpquota,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0'
  38. sed -i "$lnr s/$opt/$old,$new/" /etc/fstab
  39. mount -o remount $mnt
  40. fi
  41. # Adding v2 group and user quota index
  42. if [ ! -e "$mnt/aquota.user" ] || [ ! -e "$mnt/aquota.group" ]; then
  43. quotaoff $mnt
  44. quotacheck -cug $mnt >/dev/null 2>&1
  45. quotacheck -aug >/dev/null 2>&1
  46. fi
  47. # Adding quotacheck on reboot
  48. touch /forcequotacheck
  49. # Adding cron job
  50. echo '#!/bin/bash' > /etc/cron.daily/quotacheck
  51. echo 'touch /forcequotacheck' >> /etc/cron.daily/quotacheck
  52. chmod a+x /etc/cron.daily/quotacheck
  53. # Enabling group and user quota
  54. if [ ! -z "$(quotaon -pa | grep " $mnt " | grep 'user\|group' | grep 'is off')" ]; then
  55. quotaon $mnt
  56. check_result $? "quota can't be enabled in $mnt" $E_DISK
  57. fi
  58. # Updating vesta.conf value
  59. if [ -z "$(grep DISK_QUOTA $VESTA/conf/vesta.conf)" ]; then
  60. echo "DISK_QUOTA='yes'" >> $VESTA/conf/vesta.conf
  61. else
  62. sed -i "s/DISK_QUOTA=.*/DISK_QUOTA='yes'/g" $VESTA/conf/vesta.conf
  63. fi
  64. # Rebuilding user quota
  65. for user in $(ls $VESTA/data/users); do
  66. $BIN/v-update-user-quota $user
  67. done
  68. #----------------------------------------------------------#
  69. # Vesta #
  70. #----------------------------------------------------------#
  71. # Logging
  72. log_event "$OK" "$ARGUMENTS"
  73. exit