5. quota の設定 - パート2:ユーザとグループに quota を割り当てる

quota の割り当てには、edquota コマンドを使います (詳細は、edquota コマンドのマニュアルページをご覧下さい)。

著者は、普段、quota の編集をする前に、quotacheck-avug フラグを付けて実行し、ファイルシステムの最新の 利用状況を見るようにしています。ただ、これは個人的な習慣にすぎないので、 必須ではありません。

5.1. 特定のユーザに quota を割り当てる

以下に例題を示します。ここでは、システム上に bob というログイン id を持った ユーザがいるとします。"edquota -u bob" と いうコマンドを実行すると vi (もしくは、環境変数 $EDITOR で指定された エディタ) が開きます。そこに、quota 設定が可能な個々のパーティションそれぞれ についての、ユーザ bob の quota を記述します。
  Quotas for user bob: 
  /dev/hda2: blocks in use: 2594, limits (soft = 5000, hard = 6500) 
             inodes in use: 356, limits (soft = 1000, hard = 1500)

上記の "blocks in use" というのは、そのユーザがそのパーティション上で 既に消費しているブロックの総数を示しています。

"inodes in use" というのは、そのユーザがそのパーティション上に保持する ファイルの総数を示しています。

5.2. 特定のグループに quota を割り当てる

次は、システム上に games というグループがいたとします。"edquota -u games" というコマンドを実行すると、 再度 vi エディタが開くので、そこにグループ games の quota を記述します。
  Quotas for group games: 
  /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000) 
             inodes in use: 1454, limits (soft = 3000, hard = 4000)

5.3. 同じ値を一連のユーザに割り当てる

例えばシステム上の 100 人のユーザに対して、ユーザ bob と同じ値の quota を すばやく割り当てるようとする場合、著者なら、まず bob の quota 情報を手動で 入力してから、次のコマンドを実行します。
  edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`

上記コマンドは、csh を使っていること、および一連のユーザのユーザ ID が 500 番から始まっていることが前提になっています。

edquota コマンド以外にも、知っていなければならない用語が 3 つあります。ソフトリミット (Soft Limit)、ハードリミット (Hard Limit)、 猶予期間 (Grace Period) です。

5.4. ソフトリミット

ソフトリミット (Soft Limit) とは、quota のユーザがそのパーティション上で 占めることができる最大ディスク容量を示すものです。猶予期間 (grace period) と 組み合わせることで、ソフトリミットは、ユーザに対するボーダーラインとして機能 します。すなわち、そのボーダーを越えた時点で、ユーザに対して、現在 quota 制限 違反となっている旨の警告が発せられます。

5.5. ハードリミット

ハードリミット (Hard Limit) は、猶予期間 (grace period) の経過中にのみ機能 します。これは、ディスク使用量の絶対的な制限であり、quota のユーザはこの ハードリミットを決して越えることはできません。

5.6. 猶予期間

猶予期間 (grace period) とは、制限時間のことであり、これを越えると、quota を 有効にしたファイルシステム上で、ソフトリミットが強制的に実行されます。これは、 コマンド "edquota -t" を使って設定するようになっていて、 時間間隔としては、秒(sec)、分(min)、時(hour)、日(day)、週(week)、月(month) が 使えます。以下に、コマンド "edquota -t" を使った際に表示 される画面を示します。
  Time units may be: days, hours, minutes, or seconds 
  Grace period before enforcing soft limits for users: 
  /dev/hda2: block grace period: 0 days, file grace period: 0 days 

上記の 0 days の部分を適当な間隔に置き換えてください。著者は、個人的に 7 days (もしくは 1 week) を選ぶようにしています。