cron と at の制限 #Edit source| 改訂履歴 | |
|---|---|
| 2024-05-10 | |
本章では、システムのセキュリティを改善するため、 cron や at デーモンへのアクセスを制限する方法について説明しています。
cron デーモンの制限 #Edit sourcecron は指定した時間に裏でコマンドを自動的に実行させるためのデーモンです。 cron そのものに関する詳細は、 15.1.2項 「cron パッケージ」 をお読みください。
cron.allow ファイルは cron を利用してジョブを実行することのできるユーザを指定するためのファイルです。このファイルは既定では存在していないため、 cron.deny ファイルに記載されている場合を除いて、全てのユーザがジョブを作成できるようになっています。
root 以外のユーザが cron ジョブを作成できないようにするには、下記の手順を実施します。
まずは空の /etc/cron.allow ファイルを作成します:
tux >sudotouch/etc/cron.allow
cron ジョブの作成を許可するユーザ名を、下記のようにして追加していきます:
tux >sudoecho"tux" >> /etc/cron.allow
動作を確認したい場合は、 root 以外でかつ cron.allow 内に追加したユーザになってから cron ジョブを作成してみます。下記のようなメッセージが (一瞬だけですが) 表示されるはずです:
tux >crontab -eno crontab for tux - using an empty one
crontab のエディタを終了し、今度は上記のファイル内に追加していないユーザで同じことを実施します (もちろんユーザを追加する前に行ってもかまいません):
wilber >crontab -eYou (wilber) are not allowed to use this program (crontab) See crontab(1) for more information
cron ジョブについてcron.allow はユーザに対して、新しい cron ジョブの作成を許可するための設定です。 ユーザが cron.deny 内に登録されていた場合でも、既にそのユーザのジョブが存在していれば、それらは実行されてしまいます。既存のジョブについても禁止したい場合は、上述の手順でファイルを作成したあと、 /var/spool/cron/tabs ディレクトリ内にあるユーザの crontab ファイルを削除してください。
systemd タイマーユニットへの切り替えについてsystemd タイマーユニットへの切り替えについても検討しておくことをお勧めします。systemd タイマーユニットではさらに高度な設定が可能になっているほか、タスクの実行に対しても信頼性が高められています。既定では、一般ユーザはログインしていない限り、コードを実行することができないように設定されています。これにより、ユーザが接続していない場合のシステムとの対話を制限しています。
systemd のタイマーユニットに関する詳細は、 10.7項 「systemd タイマーユニット」 をお読みください。
at スケジューラの制限 #Edit sourceat ジョブ実行システムは、ユーザに対して 1 回限りのジョブ実行の機能を提供します。 at.allow ファイルは at を利用してジョブを実行することのできるユーザリストを指定するためのファイルです。このファイルは既定では存在していないため、 at.deny ファイルに記載されている場合を除き、全てのユーザがジョブを作成できるようになっています。
at ジョブを root 以外のユーザが利用できないようにするには、下記の手順を実施します。
まずは空の /etc/at.allow ファイルを作成します:
tux >sudotouch/etc/at.allow
at ジョブを作成できるユーザのユーザ名を、下記のようにして追加していきます:
tux >sudoecho"tux" >> /etc/at.allow
動作を確認したい場合は、 root 以外でかつ at.allow 内に追加したユーザになってからジョブを作成してみます。下記のようなメッセージが表示されるはずです:
tux >at 00:00at>
Ctrl–C を押して at プロンプトを抜け、今度は上記のファイル内に追加していないユーザで同じことを実施します (もちろんユーザを追加する前に行ってもかまいません):
wilber >at 00:00You do not have permission to use at.
at のアンインストールについてat は現在、一般的には使用されていません。明確な用途がある場合を除き、使用を制限するのではなくデーモンをアンインストールしておくことをお勧めします。