初期状態では、どのユーザーもcrontabファイルを作成でき、ジョブの自動実行を設定できます。しかし、サーバー環境では、管理者が把握していないジョブを勝手に自動実行されては困るでしょう。ユーザーに対してcrontabファイルの作成・編集を制限したい場合には、「/etc/cron.allow」と「/etc/cron.deny」を作成します。
例えば、「taro」というユーザーだけにcrontabファイルの作成・編集を許可するのなら、「/etc/cron.allow」ファイルに、
1 |
taro |
のようにユーザー名を記述します。別のユーザーがcrontabファイルを作成しようとすると、次のようなメッセージが表示されてcronatbファイルを編集できません。
1 2 3 |
$ crontab -e You (ユーザー名) are not allowed to use this program (crontab) See crontab(1) for more information |
許可したいユーザー数が少ない場合は/etc/cron.allowファイルに許可するユーザーのユーザー名を、禁止したいユーザー数が少ない場合は/etc/cron.denyファイルに禁止するユーザーのユーザー名を記述します。なお、両方のファイルに同じユーザー名を記述した場合は、許可が優先されます。また、システム管理者のrootユーザーだけは禁止にできません。
今回は、決まった時間、決まった曜日、決まった日にちにジョブを自動実行するcronを紹介しました。cron以外にも、前述したanacronや「at」などのジョブ自動実行プログラムがあります。anacronなら、ジョブの自動実行時間にサーバーが停止していても日単位、週単位、月単位で実行しなければいけないジョブを実行できます。atコマンドでは、指定した日時に1度だけジョブを実行できます。
次回は、ファイルやディレクトリーのパーミッションよりも細かいアクセス制御ができる「ACL」(Access Control Lists)を紹介します。
written by シェルスクリプトマガジン編集部(あ)