シェルスクリプトマガジン

第24回 定期的にジョブを実行する(cron)

ジョブの自動実行を設定できるユーザーを制限する

初期状態では、どのユーザーもcrontabファイルを作成でき、ジョブの自動実行を設定できます。しかし、サーバー環境では、管理者が把握していないジョブを勝手に自動実行されては困るでしょう。ユーザーに対してcrontabファイルの作成・編集を制限したい場合には、「/etc/cron.allow」と「/etc/cron.deny」を作成します。

例えば、「taro」というユーザーだけにcrontabファイルの作成・編集を許可するのなら、「/etc/cron.allow」ファイルに、

のようにユーザー名を記述します。別のユーザーがcrontabファイルを作成しようとすると、次のようなメッセージが表示されてcronatbファイルを編集できません。

許可したいユーザー数が少ない場合は/etc/cron.allowファイルに許可するユーザーのユーザー名を、禁止したいユーザー数が少ない場合は/etc/cron.denyファイルに禁止するユーザーのユーザー名を記述します。なお、両方のファイルに同じユーザー名を記述した場合は、許可が優先されます。また、システム管理者のrootユーザーだけは禁止にできません。

最後に

今回は、決まった時間、決まった曜日、決まった日にちにジョブを自動実行するcronを紹介しました。cron以外にも、前述したanacronや「at」などのジョブ自動実行プログラムがあります。anacronなら、ジョブの自動実行時間にサーバーが停止していても日単位、週単位、月単位で実行しなければいけないジョブを実行できます。atコマンドでは、指定した日時に1度だけジョブを実行できます。
次回は、ファイルやディレクトリーのパーミッションよりも細かいアクセス制御ができる「ACL」(Access Control Lists)を紹介します。

written by シェルスクリプトマガジン編集部(あ)