パソコン実習室
ユーザ管理 - スケルトンとクオータ
≪ previous  

U.5.quotacheck の定期実行

 quota ファイル (aquota.user) は quotacheck コマンドで定期的に更新する必要がある。
quota を導入・設定済みのサーバは起動時に quotacheck が実行される (/etc/rc.d/rc.sysinit スクリプトに記述されている) が、連続運転するサーバの場合は定期的な再起動など不可能であるし、人手によるコマンド投入も煩わしい。

 /home パーティション (ファイル システム) の使用率が低く、かつ Linux システムの負荷も軽くなっている時間帯に、必要なタスクを実行する確実な方法に cron の使用がある。
 cron は指定されたタスクを繰り返し実行するデーモン (crond) で、繰り返しのタイミングは 月, 日, 曜日, 時, 分 で細かく設定できる。
 以下で crontab -e コマンドで quotacheck の定期実行スケジュールを作る。
※ /etc/crontab は cron のメイン設定ファイルで、コマンドの crontab とは別物。


【 quotacheck 定期実行の必要性 】
カーネルは quotaon/quotaoff が指示された時、次の動作を行う。

quotaon : aquota.user (aquota.group) をメモリ上に読み込んでユーザのディスク使用量管理を開始する。
ユーザがディスク使用量に変更を加えると、メモリ上の管理テーブルを更新する。
(ディスク上の aquota.user は更新しない)
quotaoff : ユーザのディスク使用量管理を停止する。 メモリ上の管理テーブルが更新されていれば、ディスク上の aquota.user を管理テーブルに基づいて更新する。

 一方、quotacheck はディスク スキャン結果と aquota.user の内容を比較し、差異があれば aquota.user をスキャン結果で更新する。
 システム起動時には quotacheck が実行され、シャットダウン (再起動) 時には quotaoff となるので、別途実行する quotacheck は無用に思えるが、システム トラブル対策の保険として quotacheck を定期実行することが (特に 24 時間稼働の場合は) 望ましい。
 ちなみに quotaoff の状態でユーザがディスク使用量に変更を加えた場合、その変更は quotacheck でなければ検出できない。


U.5.1.cron の確認

 cron は通常インストール済みであると思う。 cron のデーモンである crond が稼働中かどうかを確認する。
  • crond 実行中の確認。
    # /etc/init.d/crond status
    crond (pid xxx) を実行中...

  • もし "crondは停止しています" と表示されたら、自動起動されるように chkconfig で登録し、現在停止中の crond を稼働させる。
    # chkconfig --level 345 crond on
    # chkconfig --list crond
    crond     0:オフ  1:オフ  2:オフ  3:オン  4:オン  5:オン  6:オフ
    # /etc/init.d/crond start
    crondを起動中:
    ※ 上記の例は、ラン レベル 3, 4, 5 で自動起動するように登録した。


U.5.2.cron への登録

 以下の設定例では、毎週月曜日の午前 2 時 00 分に quota を無効にし、2 時 01 分に quotacheck を実行、2 時 10 分に quota を有効に戻すスケジュールを作成する。
(quotacheck の実施時刻と quotaon のタイミングは、状況に応じて適宜変更すること)

  1. crontab コマンドを -e オプションで実行する。
    # crontab -e

  2. vi エディタが起動する。
    root として初めての crontab 登録なので、新規ファイルと同じ扱いになる。
    (過去に登録済みのスケジュールがあれば、その内容が表示される)

  3. quotaoff, quotacheck, quotaon の 3 行を追加して保存・終了する。
    00 2 * * 1 /sbin/quotaoff -uv /home
    01 2 * * 1 /sbin/quotacheck -uv /home
    10 2 * * 1 /sbin/quotaon -uv /home

  4. 初登録の場合、次のメッセージが表示される。
    no crontab for root - using an empty one
    crontab: installing new crontab

◎ crontab -e コマンドで作成したスケジュールは、/var/spool/cron ディレクトリにアカウントと
   同名の設定ファイル (この場合は root) で保存される。
   この設定ファイルは crontab -e コマンド以外で編集してはならない。
※ 設定ファイルの格納位置は、使用している Linux システムによって違いがある。
  (例:/var/cron/tabs)

【 crontab の書式 】
1 行で 1 タスクを表し、各行は 6 つのフィールド (下記) で構成される。

分 時 日 月 曜日 command

分 〜 曜日 の起動日時指定フィールドには次の値を記述する。
0 〜 59 の整数
0 〜 23 の整数
1 〜 31 の整数
1 〜 12 の整数 または 月の短縮名 (jan, feb 等)
曜日0 〜 7 の整数 (0, 7 は日曜) または 曜日の短縮名 (sun, mon 等)

起動日時指定のフィールドにはアスタリスク "*" を使用することができる。
アスタリスクはワイルド カードと同じで、すべての値に対応する。

※ quotacheck を実施可能なタスク スケジュールには次の方法もある。
○ シェルス クリプトを /etc/cron.hourly 〜 cron.monthly ディレクトリへ登録。
  (タイミングは /etc/crontab に記述されている)
○ crontab 書式ファイルを /etc/cron.d ディレクトリへ登録。



V.ユーザ追加時の作業

 パーミッションの変更やスケルトンの作成、quota によるディスク使用量の管理などの設定を見てきたが、ユーザ追加時の作業で自動化できていない部分もある。
 ユーザを追加した場合の必須作業には、次の2点がある。

V.1.パーミッション変更

 追加したユーザのホーム ディレクトリに対してパーミッションの変更を行う。
ユーザのホーム ディレクトリを userdir と仮定した場合、次のコマンドを入力する。

# chmod 555 /home/userdir


V.2.quota のコピー

 追加したユーザに quota によるディスク使用量の割り当て (制限) を行う。
quota 設定済みの既設ユーザ アカウント名を sample 、追加ユーザのアカウント名を newuser と仮定した場合、次のコマンドを入力する。

# edquota -p sample newuser




≪ previous [[ ユーザ管理 ]]