/home などは、後でユーザーに解放することも予想される。
しかし、各ユーザーが自由にいくらでもファイルを置けてしまってはまずいことが起こりかねない。
そこで、/home以下のユーザーディレクトリに、容量制限を設置しておく。
quota は独立したパッケージですので、これが導入されていないと設定できません。 aptでインストールします。
ちなみに、多分現在は、/usrがリードオンリーでマウントされているはずです。このままではaptが失敗してしまうので、かならずマウントオプションを変更してから行います
# mount /usr -o remount,rw # apt-get install quota # mount /usr -o remount,ro
さて、それでは、さっそく /home を、quotaが効くように設定してみよう。なに、簡単である。/etc/fstab のオプションに、usrquota,grpquota を書き加えればいいのだ。
/etc/fstab
・ ・ ・ LABEL=/home /home ext3 rw,nosuid,nodev,exec,usrquota,grpquota 1 2 ・ ・ ・
さあ、これで再起動。
・・・・・すると、起動時にエラーが表示されてしまう。
起動時、Linuxは設定に従い、/homeをquotaが効く状態でマウントしようとするのだが、quotaによる制限の設定ファイルがないため、「見つからないぞ!」と言ってエラーになってしまう。
さっそく定義ファイルを設置しよう。
# touch /home/quota.user # touch /home/quota.group
これでOK・・・かというと、そうではない。 まだこの段階では、quotaが読めるような中身になっていないのだ。この空ファイルを、quota用にフォーマット?する。
# quotacheck -avmu quotacheck: WARNING - Quotafile /home/quota.user was probably truncated. Can't save quota settings... quotacheck: Scanning /dev/hda9 [/home] done quotacheck: Checked 21 directories and 20 files # quotacheck -avmg quotacheck: WARNING - Quotafile /home/quota.group was probably truncated. Can't save quota settings... quotacheck: Scanning /dev/hda9 [/home] done quotacheck: Checked 21 directories and 20 files
なんか、ぱっと見るとエラーみたいだけど、これでさっき作った空ファイルがquota用にフォーマットされたのだ。試しにもう一回やってみると・・・
# quotacheck -avmu quotacheck: Scanning /dev/hda9 [/home] done quotacheck: Checked 21 directories and 20 files # quotacheck -avmg quotacheck: Scanning /dev/hda9 [/home] done quotacheck: Checked 21 directories and 20 files
ほらね。
まだ設定はなにもしていないが、これでとりあえず最低限のことはOKのはず。試しに再起動してみよう。
起動時に出ていたエラーは、もう出てこないはずだ。
ユーザーの容量制限
quotaの定義ファイル(quota.userやquota.group)は、バイナリファイル。なので、直接エディタで書き換えることができません。 quotaの設定は、専用のコマンド、edquota で行います。・・・ただし、コイツは vi での編集となります(^^;)。
では、試しに toyotomi というユーザーに制限を掛けてみましょう。
# edquota toyotomi
すると、viが起動しますので、各項目を設定します。
Disk quotas for user toyotomi (uid 500): Filesystem blocks soft hard inodes soft hard /dev/hda9 232 0 0 37 0 0 ~ ~ ・ ・ ・
quota の制限は、ソフトリミットとハードリミット。そして、ソフトリミットの猶予期間があります。ま、細かいことはどこかで調べてください。
現在(標準の状態)では、ソフトリミットもハードリミットも0になっています。これは、制限をしないという意味になります。
では、toyotomiユーザーに、ソフトリミットは10MB、ハードリミットは11MBという制限を掛けてみましょう。1MBのブロック数は1024なので、こういうふうに設定します。
Disk quotas for user toyotomi (uid 500): Filesystem blocks soft hard inodes soft hard /dev/hda9 232 10240 11264 37 0 0 ~ ~ ・ ・ ・
ちなみに、 blocks・inodesの部分。232・37となっていますね。これは、今現在使用されている容量を示していますので、書き換えたりしなくてもいいです。また、inodeでの制限は普通あまり使わないので、これもそのままでOKです。
さあ。設定を書き込んだらviを保存終了して完成。
ちなみに、現在どうなっているのかを確認する場合には、repquota コマンドを使います。
# repquota -a *** Report for user quotas on device /dev/hda9 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 52 0 0 5 0 0 toyotomi -- 232 10240 11264 37 0 0
よしよし。ちゃんと出来ているみたいですね。
念のため、toyotomiユーザーになって、CDから適当なファイルをコピーして、制限がちゃんとできているかどうか調べてみましょう。
# mount /dev/cdrom /mnt/cdrom # su toyotomo $ cd ~ $ cp /mnt/cdrom/Vine/RPMS/* ./
・・・ほら、適当なところで、「書き込めないよ!容量を超えたよ!」となって、エラーになったはず。つまり、toyotomiユーザーに対する制限が働いているわけです。
ユーザーが増えたら・・・
・・・将来、ユーザーを新しく登録したりした場合。一回一回こんな面倒なことするのかよ・・・・
ごもっともな危惧。
しかし、quotaは、特定のユーザーの制限をそのまま他のユーザーにコピーすることができます。
たとえば、今回toyotomiユーザーに行った制限を、odaユーザーにコピーしたい場合は、
# edquota -p toyotomi oda
で出来ます。また、コピーしたいユーザーが複数いる場合(oda,tokugawa,saitouなど)は、
# edquota -p toyotomi oda tokugawa saitou
これでOK。