cron
と at
の制限 #Edit source本章では、システムのセキュリティを改善するため、 cron
や at
デーモンへのアクセスを制限する方法について説明しています。
cron
デーモンの制限 #Edit sourcecron
は指定した時間に裏でコマンドを自動的に実行させるためのデーモンです。 cron
そのものに関する詳細は、 15.1.2項 「cron パッケージ」 をお読みください。
cron.allow
ファイルは cron
を利用してジョブを実行することのできるユーザを指定するためのファイルです。このファイルは既定では存在していないため、 cron.deny
ファイルに記載されている場合を除いて、全てのユーザがジョブを作成できるようになっています。
root
以外のユーザが cron
ジョブを作成できないようにするには、下記の手順を実施します。
まずは空の /etc/cron.allow
ファイルを作成します:
tux >
sudo
touch
/etc/cron.allow
cron
ジョブの作成を許可するユーザ名を、下記のようにして追加していきます:
tux >
sudo
echo
"tux" >> /etc/cron.allow
動作を確認したい場合は、 root 以外でかつ cron.allow
内に追加したユーザになってから cron
ジョブを作成してみます。下記のようなメッセージが (一瞬だけですが) 表示されるはずです:
tux >
crontab -e
no crontab for tux - using an empty one
crontab のエディタを終了し、今度は上記のファイル内に追加していないユーザで同じことを実施します (もちろんユーザを追加する前に行ってもかまいません):
wilber >
crontab -e
You (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 >
sudo
touch
/etc/at.allow
at
ジョブを作成できるユーザのユーザ名を、下記のようにして追加していきます:
tux >
sudo
echo
"tux" >> /etc/at.allow
動作を確認したい場合は、 root 以外でかつ at.allow
内に追加したユーザになってからジョブを作成してみます。下記のようなメッセージが表示されるはずです:
tux >
at 00:00
at>
Ctrl–C を押して at
プロンプトを抜け、今度は上記のファイル内に追加していないユーザで同じことを実施します (もちろんユーザを追加する前に行ってもかまいません):
wilber >
at 00:00
You do not have permission to use at.
at
のアンインストールについてat
は現在、一般的には使用されていません。明確な用途がある場合を除き、使用を制限するのではなくデーモンをアンインストールしておくことをお勧めします。