home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 August / PCWorld_1999-08_cd.bin / doc / HOWTO / mini / Quota < prev    next >
Text File  |  1998-10-24  |  12KB  |  338 lines

  1.   Quota mini-HOWTO
  2.   Albert M.C. Tam bertie@scn.org
  3.   v0.0, 8 August 1997
  4.  
  5.   Preamble: This document is copylefted by Albert M.C. Tam
  6.   (bertie@scn.org).  Permission to use, copy, distribute this document
  7.   for non-commerical purposes is hereby granted, provided that the
  8.   author's / editor's name and this notice appear in all copies and/or
  9.   supporting documents; that this document is not modified. This docu¡
  10.   ment is distributed in hope that it will be useful, but WITHOUT ANY
  11.   WARRANTY, either expressed or implied. While every effort has been
  12.   taken to ensure the accuracy of the information documented herein, the
  13.   author / editor / maintainer assumes NO RESPONSIBILITY for errors, or
  14.   for damages results for the use of the information documented herein.
  15.   This document describes how to enable file system quota on a Linux
  16.   host, assigning quota for users and groups, as well as the usage of
  17.   miscellaneous quota commands. It is intended for users running kernel
  18.   2.x (recently tested on RedHat 4.1 running kernel 2.0.27). Users run¡
  19.   ning older kernels may need to upgrade to a newer kernel version in
  20.   order to take advantage of quota.  Feel free to send feedbacks or com¡
  21.   ments to bertie@scn.org if you find an error, or if any information is
  22.   missing. I appreciate it.
  23.  
  24.   1.  What is Quota?
  25.  
  26.  
  27.   Quota allows you to specify limits on two aspects of disk storage: the
  28.   number of inodes a user or a group of users may possess; and the
  29.   number of disk blocks that may be allocated to a user or a group of
  30.   users.
  31.  
  32.   The idea behind quota is that users are forced to stay under their
  33.   disk comsumption limit, taking away their ability to comsume unlimited
  34.   disk space on a system. Quota is handled on a per user, per file
  35.   system basis. If there is more than one file system which a user is
  36.   expected to create files, then quota must be set for each file system
  37.   seperately.
  38.  
  39.   2.  Current Status of Quota on Linux
  40.  
  41.  
  42.   Quota support has been integrated into kernel since version 1.3.8x I
  43.   heard.  Now it is part of the 2.0 release of the Linux kernel. If your
  44.   system doesn't support quota, I really recommend an upgrade.
  45.  
  46.   Currently, quota works for ext2 type file system only.
  47.  
  48.   3.  Requirements for Using Quota on Linux
  49.  
  50.  
  51.   3.1.  Kernel
  52.  
  53.  
  54.   The 2.x kernel source is available from
  55.  
  56.   ______________________________________________________________________
  57.   http://sunsite.unc.edu/pub/Linux/kernel/v2.0
  58.   ______________________________________________________________________
  59.  
  60.  
  61.  
  62.   3.2.  Quota software
  63.  
  64.  
  65.   Depending on the Linux distribution you have, you may, or may not have
  66.   the quota softwares installed on your system. If you don't, then
  67.   download the quota software source from
  68.  
  69.   ______________________________________________________________________
  70.   ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz.
  71.   ______________________________________________________________________
  72.  
  73.  
  74.  
  75.   4.  Quota Setup on Linux - Part I: The Configuration
  76.  
  77.  
  78.   4.1.  Reconfigure your kernel
  79.  
  80.  
  81.   Reconfigure your kernel and add quota support by typing y to:
  82.  
  83.   ______________________________________________________________________
  84.   Quota support (CONFIG_QUOTA) [n] y
  85.   ______________________________________________________________________
  86.  
  87.  
  88.  
  89.   4.2.  Compile and install the quota softwares
  90.  
  91.  
  92.   The quota software source is available from
  93.  
  94.   ______________________________________________________________________
  95.   ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz
  96.   ______________________________________________________________________
  97.  
  98.  
  99.  
  100.   4.3.  time Modify your system init script to check quota and turn
  101.   quota on at boot
  102.  
  103.  
  104.   Here's an example:
  105.  
  106.   ______________________________________________________________________
  107.   # Check quota and then turn quota on.
  108.   if [ -x /usr/sbin/quotacheck ]
  109.           then
  110.                  echo "Checking quotas. This may take some time."
  111.                  /usr/sbin/quotacheck -avug
  112.                  echo " Done."
  113.           fi
  114.            if [ -x /usr/sbin/quotaon ]
  115.           then
  116.                   echo "Turning on quota."
  117.                   /usr/sbin/quotaon -avug
  118.           fi
  119.   ______________________________________________________________________
  120.  
  121.  
  122.  
  123.   The golden rule is that always turn quota on after your file systems
  124.   in /etc/fstab have been mounted, otherwise quota will fail to work. I
  125.   recommend turning quota on at the end of your system init script, or,
  126.   if you like, right after the part where file systems are mounted in
  127.   your system init script.
  128.  
  129.   4.4.  Modify /etc/fstab
  130.  
  131.  
  132.  
  133.   Partitions that you have not yet enabled quota normally look something
  134.   like:
  135.  
  136.   ______________________________________________________________________
  137.   /dev/hda1       /       ext2    defaults        1       1
  138.   /dev/hda2       /usr    ext2    defaults        1       1
  139.   ______________________________________________________________________
  140.  
  141.  
  142.  
  143.   To enable user quota support on a file system, add "usrquota" to the
  144.   fourth field containing the word "defaults" (man fstab for details).
  145.  
  146.   ______________________________________________________________________
  147.   /dev/hda1       /       ext2    defaults        1       1
  148.   /dev/hda2       /usr    ext2    defaults,usrquota       1       1
  149.   ______________________________________________________________________
  150.  
  151.  
  152.  
  153.   Replace "usrquota" with "grpquota", should you need group quota
  154.   support on a file system.
  155.  
  156.   ______________________________________________________________________
  157.   /dev/hda1       /       ext2    defaults        1       1
  158.   /dev/hda2       /usr    ext2    defaults,grpquota       1       1
  159.   ______________________________________________________________________
  160.  
  161.  
  162.  
  163.   Need both user quota and group quota support on a file system?
  164.  
  165.   ______________________________________________________________________
  166.   /dev/hda1       /       ext2    defaults        1       1
  167.   /dev/hda2       /usr    ext2    defaults,usrquota,grpquota       1   1
  168.   ______________________________________________________________________
  169.  
  170.  
  171.  
  172.   4.5.  Create quota record "quota.user" and "quota.group"
  173.  
  174.  
  175.   Both quota record files, quota.user and quota.group, should be owned
  176.   by root, and read-write permission for root and none for anybody else.
  177.  
  178.   Login as root. Go to the root of the partition you wish to enable
  179.   quota, then create quota.user and quota.group by doing:
  180.  
  181.   ______________________________________________________________________
  182.   touch /partition/quota.user
  183.   touch /partition/quota.group
  184.   chmod 600 /partition/quota.user
  185.   chmod 600 /partition/quota.group
  186.   ______________________________________________________________________
  187.  
  188.  
  189.  
  190.   4.6.  Reboot
  191.  
  192.  
  193.   Now reboot system for the changes you have made to take effect.
  194.  
  195.   Also note that subsequent partitions you wish to enable quota in the
  196.   future only require step 4, 5, and 6.
  197.  
  198.  
  199.   5.  Quota Setup on Linux - Part II: Assigning Quota for Users and
  200.   Groups
  201.  
  202.  
  203.   This operation is performed with the edquota command (man edquota for
  204.   details).
  205.  
  206.   I would normally run quotacheck with the flags -avug to obtain the
  207.   most updated filesystems usage prior to editing quota. This is just a
  208.   personal habit, and not a required step however.
  209.  
  210.   5.1.  Assigning quota for a particular user
  211.  
  212.  
  213.   Here's an example. I have a user with the login id bob on my system.
  214.   The command "edquota -u bob" takes me into vi (or editor specified in
  215.   my $EDITOR environment variable) to edit quota for user bob on each
  216.   partition that has quota enabled:
  217.  
  218.   ______________________________________________________________________
  219.   Quotas for user bob:
  220.   /dev/hda2: blocks in use: 2594, limits (soft = 5000, hard = 6500)
  221.            inodes in use: 356, limits (soft = 1000, hard = 1500)
  222.   ______________________________________________________________________
  223.  
  224.  
  225.  
  226.   "blocks in use" is the total number of blocks (in kilobytes) a user
  227.   has comsumed on a partition.
  228.  
  229.   "inodes in use" is the total number of files a user has on a
  230.   partition.
  231.  
  232.   5.2.  Assigning quota for a particular group
  233.  
  234.  
  235.   Now I have a group games on my system. "edquota -g games" takes me
  236.   into the vi editor again to edit quota for the group games:
  237.  
  238.   ______________________________________________________________________
  239.           Quotas for group games:
  240.           /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000)
  241.                   inodes in use: 1454, limits (soft = 3000, hard = 4000)
  242.   ______________________________________________________________________
  243.  
  244.  
  245.  
  246.   5.3.  Assigning quota for a bunch of users with the same value
  247.  
  248.  
  249.   To rapidly set quotas for, say 100 users, on my system to the same
  250.   value as my user bob, I would first edit bob's quota information by
  251.   hand, then execute:
  252.  
  253.   ______________________________________________________________________
  254.   edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`
  255.   ______________________________________________________________________
  256.  
  257.  
  258.  
  259.   assuming that you are using csh, and that you assign your user UID's
  260.   starting with 500.
  261.  
  262.   In addition to edquota, there are 3 terms which you should familiarize
  263.   yourself with: Soft Limit, Hard Limit, and Grace Period.
  264.  
  265.   5.4.  Soft Limit
  266.  
  267.  
  268.   _Soft limit_ indicates the maximum amount of disk usage a quota user
  269.   has on a partition. When combined with grace period, it acts as the
  270.   border line, which a quota user is issued warnings about his impending
  271.   quota violation when passed.
  272.  
  273.   5.5.  Hard Limit
  274.  
  275.  
  276.   Hard limit works only when grace period is set. It specifies the
  277.   absolute limit on the disk usage, which a quota user can't go beyond
  278.   his hard limit.
  279.  
  280.   5.6.  Grace Period
  281.  
  282.  
  283.   Executed with the command "edquota -t", grace period is a time limit
  284.   before the soft limit is enforced for a file system with quota
  285.   enabled. Time units of sec(onds), min(utes), hour(s), day(s), week(s),
  286.   and month(s) can be used.  This is what you'll see with the command
  287.   "edquota -t":
  288.  
  289.   ______________________________________________________________________
  290.   Time units may be: days, hours, minutes, or seconds
  291.   Grace period before enforcing soft limits for users:
  292.   /dev/hda2: block grace period: 0 days, file grace period: 0 days
  293.   ______________________________________________________________________
  294.  
  295.  
  296.  
  297.   Change the 0 days part to any length of time you feel reasonable. I
  298.   personally would choose 7 days (or 1 week).
  299.  
  300.   6.  Miscellaneous Quota Commands
  301.  
  302.  
  303.   6.1.  Quotacheck
  304.  
  305.  
  306.   Quotacheck is used to scan a file system for disk usages, and updates
  307.   the quota record file "quota.user" to the most recent state. I
  308.   recommend running quotacheck at system bootup, or via cronjob
  309.   periodically (say, every week?).
  310.  
  311.   6.2.  Repquota
  312.  
  313.  
  314.   Repquota produces a summarized quota information for a file system.
  315.   Here is a sample output repquota gives:
  316.  
  317.   ______________________________________________________________________
  318.   # repquota -a
  319.                                   Block limits               File limits
  320.           User            used    soft    hard  grace    used  soft  hard  grace
  321.           root      --  175419       0       0          14679     0     0
  322.           bin       --   18000       0       0            735     0     0
  323.           uucp      --     729       0       0             23     0     0
  324.           man       --      57       0       0             10     0     0
  325.           user1     --   13046   15360   19200            806  1500  2250
  326.           user2     --    2838    5120    6400            377  1000  1500
  327.   ______________________________________________________________________
  328.  
  329.  
  330.  
  331.   6.3.  Quotaon and Quotaoff
  332.  
  333.  
  334.   Quotaon is used to turn on quota accouting; quotaoff to turn it off.
  335.   Actually both files are similar. They are executed at system startup
  336.   and shutdown.
  337.  
  338.