クスクス り〜な!
雑記など

/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のはず。試しに再起動してみよう。

起動時に出ていたエラーは、もう出てこないはずだ。

ユーザーの容量制限 anchor.png

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ユーザーに対する制限が働いているわけです。

Page Top

ユーザーが増えたら・・・ anchor.png

・・・将来、ユーザーを新しく登録したりした場合。一回一回こんな面倒なことするのかよ・・・・

ごもっともな危惧。

しかし、quotaは、特定のユーザーの制限をそのまま他のユーザーにコピーすることができます。

たとえば、今回toyotomiユーザーに行った制限を、odaユーザーにコピーしたい場合は、

# edquota -p toyotomi oda

で出来ます。また、コピーしたいユーザーが複数いる場合(oda,tokugawa,saitouなど)は、

# edquota -p toyotomi oda tokugawa saitou

これでOK。

Page Top

グループに対する制限 anchor.png

ちなみに、今回はユーザー単位での制限をしてみたが、quotaはグループ単位で制限をすることもできる。

ただし!!!!

私も最初勘違いしていたのだが、このグループ単位とは、あるグループ全体で使用可能な容量の制限となります。

(最初はてっきり、あるグループに100MBの制限を掛けておくと、そこに所属しているユーザー全員が100MB使えるようになるのだと勘違いしていました)

Page Top

後処理 anchor.png

quotaは通常、管理者が設定するものですよね。これを勝手に書き換えられたりしては大変です。rootだけが読み書きできるようにしておきます。

# chmod 600 /home/quota.user
# chmod 600 /home/quota.group

そして、quotaを設定しなおした後などには、一度 quotacheck を実行しなくてはいけません。また、時々更新してやる必要もあります。

# quotacheck -amug

そこで、私はcronを使って、一日一回、quotaをチェックするようにしています。

なにこれ?
お品書き
雑記など
XOOPS Cube PROJECT