ロックファイルは、/etc/security/dev 内で割り当て可能デバイスごとに 1 つずつ作成される長さ 0 のファイルです。
割り当て可能デバイスのロックファイルがない場合は、そのデバイスを割り当てできず、誰もアクセスできません。
dminfo コマンドを使用して、デバイスの名前を device_maps ファイル内の該当するエントリから取得します。
「device_maps ファイル」 と、dminfo(1M)、device_maps(4) のマニュアルページを参照してください。たとえば、デバイスタイプ st のデバイス名は st0 です。デバイス名をロックファイル名として使用してください。
touch コマンドを使用し、デバイス名を使用してデバイス用の空のロックファイルを作成します。
untouchable# cd /etc/security/dev untouchable# touch device-name untouchable# chmod 600 device-name untouchable# chown bin device-name untouchable# chgrp bin device-name
この節では、割り当て機構の機能について例を挙げて説明します。
allocate コマンドは、まず/etc/security/dev ディレクトリ内で、指定されたデバイスのデバイス名が付いたロックファイルがあるかどうかをチェックします。ファイルが allocate によって所有されている場合は、ロックファイルの所有権が allocate コマンドを入力したユーザの名前に変更されます。
次に、allocate コマンドは device_allocate ファイル内でデバイスのエントリをチェックし、そのエントリにデバイスが割り当て可能として設定されているかどうかをチェックします。
次の画面例の最初のリストは、/etc/security/dev 内に、st0 デバイスに使用される所有者 bin、グループ bin、モード 600 のロックファイルがあることを示しています。第 2 のリストは、それに関連するデバイス特殊ファイルが正しく設定されていて、所有者は bin、グループは bin、モードは 000: であることを示しています。
untouchable% ls -lg /etc/security/dev/st0 -rw------- 1 bin bin 0 Dec 6 15:21 /etc/security/dev/st0 untouchable% ls -lg /devices/sbus@1,f8000000/esp@0,800000 c--------- 1 bin bin 18, 4 May 12 13:11 st@4,0: c--------- 1 bin bin 18, 20 May 12 13:11 st@4,0:b c--------- 1 bin bin 18, 28 May 12 13:11 st@4,0:bn c--------- 1 bin bin 18, 12 May 12 13:11 st@4,0:c . . . c--------- 1 bin bin 18, 0 May 12 13:11 st@4,0:u c--------- 1 bin bin 18, 16 May 12 13:11 st@4,0:ub c--------- 1 bin bin 18, 24 May 12 13:11 st@4,0:ubn c--------- 1 bin bin 18, 8 May 12 13:11 st@4,0:un
次の画面では、ユーザ vanessa がデバイス st0 を割り当てます。
untouchable% whoami vanessa untouchable% allocate st0
ユーザ vanessa が allocate コマンドを入力してテープ st0 を割り当てると、allocate はまず /etc/security/dev/st0 があるかどうかをチェックします。ロックファイルが存在しない場合や、allocate 以外のユーザに所有されている場合は、vanessa はデバイスを割り当てることができません。
正しい所有権と許可が設定されたロックファイルが見つかると、allocate コマンドはそのデバイスのエントリが device_allocate ファイルに入っているかどうかと、そのエントリでデバイスが割り当て可能として指定されているかどうかをチェックして確認します。
この例では、st0 デバイスのデフォルトの device_allocate エントリでは、デバイスが割り当て可能として指定されています。allocate コマンドでは上記の条件がすべて満たされていることがわかるので、デバイスが vanessa に割り当てられます。
allocate コマンドは、/dev ディレクトリ内でデバイスに関連付けられたデバイス特殊ファイルの所有権と許可を変更します。st0 デバイスを vanessa に割り当てるために、それに関連付けられたデバイス特殊ファイルのモードが 600 に変更され、所有者が vanessa に変更されます。
また、allocate コマンドは、/etc/security/dev ディレクトリ内でデバイスに関連付けられたロックファイルの所有権を変更します。st0 デバイスを vanessa に割り当てるために、/etc/security/dev/st0 の所有者が vanessa に変更されます。
ユーザ vanessa がデバイス名 st0 を使用して allocate コマンドを実行すると、次の画面例のように /etc/security/dev の所有者が vanessa に変更され、それに関連付けられたデバイス特殊ファイルの所有者は vanessa になり、vanessa はファイルを読み書きする許可を持っていることになります。
untouchable% whoami vanessa untouchable% allocate st0 untouchable% ls -lg /etc/security/dev/st0 -rw------- 1 vanessa staff 0 Dec 6 15:21 /etc/security/dev/st0 untouchable% ls -la /devices/sbus@1,f8000000/esp@0,800000 . . . crw------- 1 vanessa 18, 4 May 12 13:11 st@4,0: crw------- 1 vanessa 18, 12 May 12 13:11 st@4,0:b crw------- 1 vanessa 18, 12 May 12 13:11 st@4,0:bn crw------- 1 vanessa 18, 12 May 12 13:11 st@4,0:c . . . crw------- 1 vanessa 18, 4 May 12 13:11 st@4,0:u crw------- 1 vanessa 18, 12 May 12 13:11 st@4,0:ub crw------- 1 vanessa 18, 12 May 12 13:11 st@4,0:ubn crw------- 1 vanessa 18, 12 May 12 13:11 st@4,0:un