Solaris のシステム管理 (セキュリティサービス)

デバイス割り当て参照

デバイス割り当てを行うことによって、承認されていないユーザーがリムーバブルメディアを使用できないようにします。デバイス割り当てを要求したり、デバイスを使用する権限を拒否したりすることで、データの損失、コンピュータウィルスなどのセキュリティ違反から使用する環境を保護することができます。次の節では、BSM デバイス割り当てについて説明します。

デバイス割り当てメカニズムの構成要素

デバイス割り当てメカニズムは、次の要素で構成されます。

device_allocate ファイル、device_map ファイル、ロックファイルは、ローカル構成ファイルです。これらのファイルは、ネームサービスデータベースとして管理されません。テープドライブ、フロッピーディスクドライブ、およびプリンタ はすべて、特定のマシンに接続されるためです。

デバイス割り当てコマンドの使用方法

この節では、allocatedeallocate、および list_devices コマンドのいくつかのオプションについて説明します。これらのコマンドを使用するには、スーパーユーザーまたは同等の役割が必要です。各コマンドについての詳細は、それぞれのマニュアルページを参照してください。

allocate -F device_special_filename

指定するデバイスを再度割り当てます。通常は、このオプションに -U オプションを付けて、指定するデバイスを指定するユーザーに再度割り当てます。-U オプションを指定しない場合、デバイスは root に割り当てられます。

allocate -U username

デバイスは、現在のユーザーではなく指定するユーザーに割り当てられます。このオプションを使用すると、スーパーユーザーになっている間は、指定するユーザーの識別情報がなくても、そのデバイスを割り当てることができます。

deallocate -F device_special_filename

デバイス割り当てを強制的に解除します。ユーザーに割り当てられたデバイスは、プロセスが終了するとき、またはそのユーザーがログアウトするときに、自動的に割り当てが解除されます。ユーザーがテープドライブの割り当てを解除し忘れたときには、スーパーユーザーになっている間に -F オプションを使用して割り当てを強制的に解除することができます。

deallocate -I

割り当て可能なすべてのデバイス割り当てを強制的に解除します。このオプションは、システムの初期化時にのみ使用します。

list_devices

device_maps ファイルに一覧されたデバイスに関連付けられているデバイス特殊ファイルが一覧されます。

list_devices -U username

指定したユーザー名に関連付けられたユーザー ID に割り当て可能のデバイスまたは割り当て済みのデバイスが一覧されます。このオプションを使用すると、スーパーユーザーになっている間に、別のユーザーに割り当て可能なデバイス、または割り当て済みのデバイスを確認できます。

割り当てエラー状態

割り当て可能デバイスは、デバイス特殊ファイルモードが 0100 になっているユーザー bin とグループ bin に所有されている場合に、割り当てエラー状態になります。割り当てエラー状態になっているデバイスを割り当てる場合は、deallocate コマンドの -F オプションを使用して、そのデバイスの割り当てを強制的に解除する必要があります。または、allocate -U を使用して、デバイスをユーザーに割り当て、表示されるエラーメッセージを調べます。デバイス関連の問題が解決したあと、 deallocate -F または allocate - F コマンドを再度実行して、デバイスから割り当てエラー状態をクリアする必要があります。

device_maps ファイル

/etc/security/device_maps ファイルを調べると、各割り当て可能デバイスに関連付けられたデバイス名、デバイスの種類、デバイス特殊ファイルを判断できます。詳細については、device_maps(4) のマニュアルページを参照してください。デバイスマップは、デバイス割り当てを設定したときに作成されます。device_maps の初期ファイルは、BSM を有効にしたときに、bsmconv によって作成されます。この初期 device_maps ファイルは、あくまでも開始点として使用する必要があります。device_maps は、使用する環境に合わせて拡張およびカスタマイズできます。

device_maps ファイルでは、デバイスごとにデバイス特殊ファイルの割り当てが定義されます。多くの場合、この割り当ては単純ではありません。このファイルによって、各種のプログラムはどのデバイス特殊ファイルがどのデバイスに割り当てられているかを検出できます。たとえば、dminfo コマンドを使用すると、デバイス名、デバイスの種類およびデバイス特殊ファイルを取得して、割り当て可能なデバイスを設定するときに指定できます。dminfo コマンドは、device_maps ファイルを使用してデバイス割り当て情報を報告します。

各デバイスは、次の形式の 1 行のエントリで表されます。

device-name:device-type:device-list

エントリを次の行に続けるには、行末にバックスラッシュ (\) を付けます。コメントも挿入できます。# を付けると、それに続くすべてのテキストは、行末にバックスラッシュ (\) のない次の改行までコメントになります。どのフィールドでも先行ブランクと後続ブランクを使用できます。

device-name

st0fd0、または audio などのデバイス名を指定します。ここで指定するデバイス名は、/etc/security/dev ディレクトリ内で使用されるロックファイル名と対応している必要があります。

device-type

汎用デバイスタイプ (stfdaudio などのデバイスクラス名) を指定します。device-type では、関連するデバイスが論理的にグループ化されます。

device-list

物理デバイスに関連付けられたデバイス特殊ファイルの一覧です。device-list には、特定のデバイスにアクセスできるすべての特殊ファイルが含まれている必要があります。リストが不完全な場合は、悪意を持ったユーザーでも個人情報を入手または変更できることになります。device-list フィールドには、/devices 内または/dev 内のシンボリックリンクに置かれた実デバイスファイルを入力します。/dev ディレクトリ内のシンボルリンクは、バイナリ互換性を持ちます。

次の例では、SCSI テープ st0 とフロッピーディスク fd0device_maps ファイルエントリを示します。


fd0:\
	fd:\
	/dev/fd0 /dev/fd0a /dev/fd0b /dev/rfd0 /dev/rfd0a /dev/rfd0b:\
					.
					.
					.
st0:\
	st:\
	/dev/rst0 /dev/rst8 /dev/rst16 /dev/nrst0 /dev/nrst8 /dev/nrst16:\

device_allocate ファイル

device_allocate ファイルを変更して、デバイスを割り当て可能から割り当て不可に変更したり、新しいデバイスを追加したりします。device_allocate ファイルの例を次に示します。


st0;st;;;;/etc/security/lib/st_clean
fd0;fd;;;;/etc/security/lib/fd_clean
sr0;sr;;;;/etc/security/lib/sr_clean
audio;audio;;;*;/etc/security/lib/audio_clean

割り当て可能にするデバイスは、BSM を初期構成するときに定義します。上述の device_allocate ファイルの例のように、デフォルトのデバイスとそれらに定義されている特性をそのまま使用することもできます。システム稼働後の実行中にマシンにデバイスを追加するときには、新しいデバイスを割り当て可能にするかどうかを決定する必要があります。

BSM をインストールしたあとで、デバイスのエントリは device_allocate ファイルを変更できます。割り当てたいデバイスは、使用する前に各マシン上の device_allocate ファイル内で定義する必要があります。現在、カートリッジテープドライブ、フロッピーディスクドライブ、CD-ROM デバイス、オーディオチップは割り当て可能と見なされ、デバイスクリーンスクリプトが用意されています。


注 -

XylogicsTM テープドライブまたは Archive テープドライブでは、SCSI デバイス用に用意されている st_clean スクリプトも使用できます。また、モデム、端末、グラフィックスタブレットなどのデバイスも割り当て可能にすることができます。ただし、これらのデバイスを使用する場合は、独自のデバイスクリーンスクリプトを作成し、オブジェクト再使用要求に対応する必要があります。


device_allocate ファイル内のエントリは、デバイスが割り当て可能であると特に記述されていない限り、そのデバイスが割り当て可能であることを説明しません。上述の device_allocate ファイルの例では、オーディオデバイスエントリの第 5 フィールドにアスタリスク (*) が指定されています。第 5 フィールド内のアスタリスクは、そのデバイスが割り当て可能でないことをシステムに示します。つまり、システム管理者はユーザーにデバイスを使用する前に割り当てたり、あとで割り当てを解除するように要求したりする必要がありません。このフィールド内の他の文字列は、デバイスが割り当て可能であることを示します。

各デバイスは、次の形式の 1 行のエントリで表します。


device-name;device-type;reserved;reserved;alloc;device-clean

たとえば、次の行はデバイス名 st0: のエントリを示しています。


st0;st;;;;;/etc/security/lib/st_clean

エントリを次の行に続けるには、行末にバックスラッシュ (\) を付けます。コメントも挿入できます。# を付けると、それに続くのすべてのテキストは、行末にバックスラッシュ (\) のない次の改行までコメントになります。どのフィールドでも先行ブランクと後続ブランクを使用できます。

次の各段落では、device_allocate ファイル内の各フィールドについて詳しく説明します。

device-name

st0fd0、または sr0 などのデバイス名を指定します。割り当て可能デバイスを作成するときには、device_maps ファイル内の device-name フィールドから device-name を取得するか、または dminfo コマンドを使用します (device-name 名は、デバイスの DAC ファイル名でもある)。

device-type

汎用デバイスタイプ (stfdsr などのデバイスクラス名) を指定します。このフィールドによって、関連するデバイスがグループ化されます。割り当て可能デバイスを作成するときには、device_maps ファイル内の device-type フィールドから device-type を取得するか、または dminfo コマンドを使用します。

reserved

これらの 2 つのフィールドは、将来の使用に予約されています。

alloc

デバイスが割り当て可能かどうかを指定します。このフィールドにアスタリスク (*) が入っている場合は、デバイスが割り当て不可能であることを示します。このフィールドに他の文字列が入っている場合や、空の場合は、デバイスが割り当て可能であることを示します。

device-clean

割り当てプロセス中にクリーンアップやオブジェクト再使用防止などの特殊処理のために呼び出されるスクリプトのパス名を指定します。deallocate - F を使用してデバイスの割り当てを強制的に解除するときなど、デバイスに対して deallocate コマンドを実行すると、device-clean スクリプトが実行されます。

デバイスクリーンスクリプト

「デバイスクリーン」スクリプトは、使用可能なすべてのデータを再使用する前に物理デバイスからパージするというセキュリティ要件に対応するものです。デフォルトでは、カートリッジテープドライブ、フロッピーディスクドライブ、CD-ROM デバイス、オーディオデバイスには、必要なデバイスクリーンスクリプトが用意されています。この節では、デバイスクリーンスクリプトが実行する処理について説明します。

オブジェクトの再使用

デバイス割り当てによって、オブジェクト再使用の要件の一部が満たされます。デバイスクリーンスクリプトによって、あるユーザーがデバイス上に残したデータは、そのデバイスが別のユーザーによって割り当て可能になる前に確実にクリアされます。

テープ用のデバイスクリーンスクリプト

st_clean デバイスクリーンスクリプトでは、3 つのテープデバイスがサポートされます。サポートされるテープデバイスは次のとおりです。

st_cleanスクリプトでは、mt コマンドの rewofflオプションを使用して、デバイスのクリーンアップを制御します。詳細は、mt(1) のマニュアルページを参照してください。st_clean スクリプトは、システムブート中に実行されると、デバイスを照会し、そのデバイスがオンラインになっていてメディアが挿入されているかどうかを調べます。1/4 インチのテープデバイスにメディアが挿入されているときは、そのデバイスは強制的に割り当てエラー状態になるため、システム管理者はそのデバイスを手動でクリーンアップする必要があります。

通常のシステム操作中に、allocate または deallocate コマンドを対話型モードで実行すると、割り当てを解除しようとしているデバイスからメディアを取り出すように求めるプロンプトが表示されます。スクリプトは、メディアがデバイスから取り出されるまで一時停止します。

フロッピーディスクと CD-ROM 用のデバイスクリーンスクリプト

次の表に、フロッピーディスクとCD-ROM 用のデバイスクリーンスクリプトを示します。

表 25-9 フロッピーディスクと CD-ROM 用のデバイスクリーンスクリプト

ディスクデバイスの種類 

デバイスクリーンスクリプト 

フロッピーディスク 

fd_clean

CD-ROM  

sr_clean

スクリプトは、eject コマンドを使用してドライブからメディアを取り出します。詳細については、eject(1) のマニュアルページを参照してください。eject コマンドが失敗すると、デバイスは割り当てエラー状態になります。

オーディオ用のデバイスクリーンスクリプト

オーディオデバイスは、audio-clean スクリプトを使用してクリーンアップします。スクリプトは、AUDIO_DRAIN ioctl システムコールを実行してデバイスをフラッシュしてから、AUDIO_SETINFO ioctl システムコールコマンドを実行してデバイス構成をデフォルトにリセットします。また、スクリプトは AUDIOGETREG ioctl システムコールを使用して、オーディオチップレジスタを検出します。レジスタのデフォルト設定にリセットする場合は、AUDIOSETREG ioctl システムコールを使用します。

新しいデバイスクリーンスクリプトの作成

システムに新しく割り当て可能デバイスを追加する場合は、独自のデバイスクリーンスクリプトを作成する必要があります。deallocate コマンドは、デバイスクリーンスクリプトにパラメータを渡します。次のように、パラメータはデバイス名が入った文字列です (device_allocate(4) のマニュアルページを参照)。


st_clean -[I|F|S] device-name

デバイスクリーンスクリプトは、正常終了した場合は 0 を、失敗した場合は 1 以上の値を返します。オプション -I-F-S を使用すると、スクリプトに実行モードを判断させることができます。

-I オプションは、システムをブートするときにだけ指定します。すべての出力は、システムコンソールに送られます。失敗した場合や、メディアを強制的に取り出せない場合は、デバイスを割り当てエラー状態にします。

-F オプションは、強制クリーンアップを行うときに指定します。このオプションは対話型で、ユーザーがプロンプトに応答するものと見なします。このオプションが付いたスクリプトは、クリーンアップの一部に失敗した場合に、クリーンアップ全体を完了しようとします。

-S オプションは、標準クリーンアップを行うときに指定します。このオプションは対話型で、ユーザーがプロンプトに応答するものと見なします。

デバイス割り当てメカニズムの機能

この節では、デバイス割り当てメカニズムの機能について例を挙げて説明します。

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

ユーザー vanessaallocate コマンドを実行してテープ 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/st0 の所有者が 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