Solaris のシステム管理 (第 2 巻)

crontab へのアクセスの制御

cron.denycron.allow という /etc/cron.d ディレクトリ内の 2 つのファイルを使用して、crontab へのアクセスを制御できます。これらのファイルによって、指定したユーザーだけが、それぞれ自分の crontab ファイルの作成、編集、表示、または削除などの crontab 関連操作を実行できるようにします。

cron.deny および cron.allow ファイルは、それぞれ 1 行に 1 ユーザー名が入ったリストからなります。これらのアクセス制御用ファイルは、次のように連携して機能を果たします。

cron.denycron.allow ファイルを編集または作成するには、スーパーユーザーの権限が必要です。

SunOS ソフトウェアのインストール時に、デフォルトで次の cron.deny ファイルが提供されます。


$ cat /etc/cron.d/cron.deny
daemon
bin
smtp
nuucp
listen
nobody
noaccess

上記のすべてのユーザーが、crontab コマンドにアクセスできません。このファイルを編集すれば、crontab コマンドへのアクセスを拒否したいユーザー名を追加できます。

デフォルトでは、cron.allow ファイルは提供されません。つまり、Solaris ソフトウェアのインストール後には、デフォルトの cron.deny ファイルにリストされているユーザー以外のユーザーすべてが crontab にアクセスできます。cron.allow ファイルを作成した場合、そのユーザーだけが crontab コマンドにアクセスできます。

crontab へのアクセスを拒否する方法

  1. スーパーユーザーになります。

  2. /etc/cron.d/cron.deny ファイルを編集し、crontab コマンドを使用させないユーザー名を次のように 1 行に 1 つずつ追加します。


    daemon
    bin
    smtp
    nuucp
    listen
    nobody
    noaccess
    username1
    username2
    username3
    .
    .
    .
  3. /etc/cron.d/cron.deny ファイルを確認します。


    # cat /etc/cron.d/cron.deny
    

crontab へのアクセスを特定のユーザーに限定する方法

  1. スーパーユーザーになります。

  2. /etc/cron.d/cron.allow ファイルを作成します。

  3. 次のように、crontab コマンドの使用を許可するユーザー名を 1 行に 1 つずつ入力します。


    root
    username1
    username2
    username3
    .
    .
    .
    

    このリストには必ず root を追加してください。追加しなければ、スーパーユーザーからの crontab コマンドへのアクセスが拒否されてしまいます。

例 - crontab へのアクセスを特定のユーザーに限定する

次は、ユーザー visitorjonestempcrontab をアクセスさせない cron.deny ファイルの例です。


$ cat /etc/cron.d/cron.deny
daemon
bin
smtp
nuucp
listen
nobody
noaccess
jones
temp
visitor

次は cron.allow ファイルの例です。ユーザー smithjoneslproot だけが crontab にアクセスできます。


$ cat /etc/cron.d/cron.allow
root
jones
lp
smith

制限された crontab へのアクセスを確認する方法

特定のユーザーが crontab にアクセスできるかどうかを確認するには、そのユーザーのアカウントにログインして、crontab -l コマンドを実行します。


$ crontab -l

そのユーザーが crontab にアクセスできて、すでに crontab ファイルを作成している場合は、その crontab ファイルが表示されます。そのユーザーが crontab にアクセスできるが、crontab ファイルがない場合は、次のようなメッセージが表示されます。

(crontab: crontab ファイルを開けません)

このユーザーは、cron.allow (が存在する場合) に含まれているか、cron.deny に含まれていません。

ユーザーが crontab にアクセスできない場合は、上記の crontab ファイルの有無に関わらず、次のメッセージが表示されます。

(crontab: cron を使用許可されていません)

これは、ユーザーが cron.allow (が存在する場合) に含まれていないか、cron.deny ファイルに含まれていることを意味します。