デバイス割り当てを行うことによって、承認されていないユーザーがリムーバブルメディアを使用できないようにします。ユーザーへのデバイス割り当てを要求することができます。デバイスを使用する権限を拒否することができます。そのような割り当てによって、データの損失、コンピュータウィルスなどのセキュリティ違反からサイトを保護できます。次の節では、デバイス割り当てについて説明します。
allocate、deallocate、dminfo、list_devices コマンド。詳細については、デバイス割り当てコマンドの使用方法を参照してください。
/etc/security/device_allocate ファイル。詳細については、device_allocate(4) のマニュアルページを参照してください。
/etc/security/device_maps ファイル。詳細については、 device_maps(4) のマニュアルページを参照してください。
ロックファイル。割り当て可能デバイスごとに /etc/security/dev ディレクトリに配置する
各割り当て可能デバイスに関連付けられた「デバイス特殊ファイル」の変更後の属性
各割り当て可能デバイスのデバイスクリーンスクリプト
device_allocate ファイル、device_maps ファイル、およびロックファイルは、ローカル構成ファイルです。これらのファイルは、ネームサービスデータベースとして管理されません。テープドライブ、フロッピーディスクドライブ、およびプリンタはすべて、特定のマシンに接続されるためです。
この節では、管理者向けのコマンド allocate、deallocate、および list_devices のオプションのいくつかについて説明します。これらのオプションにアクセスできるのは、root またはそれと同等の役割のみです。各コマンドについての詳細は、それぞれのマニュアルページを参照してください。
表 23–8 デバイス割り当てコマンドの管理オプション
割り当て可能デバイスは、デバイス特殊ファイルのモードが 0100 でかつユーザー bin とグループ bin に所有されている場合に、「割り当てエラー状態」になります。割り当てエラー状態になっているデバイスを割り当てたい場合は、そのデバイスの割り当ての強制解除を試みます。-F オプションを指定して deallocate コマンドを実行すると、割り当てが強制的に解除されます。または、allocate -U を使用して、そのデバイスをユーザーに割り当てます。いったんデバイスが割り当てられると、発生したエラーメッセージを調査できます。デバイスの問題が解決したら、強制オプション -F を使用して、デバイスの割り当てエラー状態をクリアする必要があります。
/etc/security/device_maps ファイルを調べると、各割り当て可能デバイスに関連付けられたデバイス名、デバイスの種類、デバイス特殊ファイルを判断できます。 device_maps(4) のマニュアルページを参照してください。デバイスマップは、デバイス割り当てを設定したときに作成されます。device_maps の初期ファイルは、BSM を有効にしたときに、bsmconv によって作成されます。この初期 device_maps ファイルは、あくまでも開始点として使用する必要があります。device_maps は、使用する環境に合わせて拡張およびカスタマイズできます。
device_maps ファイルでは、デバイスごとにデバイス特殊ファイルの割り当てが定義されます。多くの場合、この割り当ては単純ではありません。このファイルによって、各種のプログラムはどのデバイス特殊ファイルがどのデバイスに割り当てられているかを検出できます。たとえば、dminfo コマンドを使用すると、デバイス名、デバイスの種類およびデバイス特殊ファイルを取得して、割り当て可能なデバイスを設定するときに指定できます。dminfo コマンドは、device_maps ファイルを使用してデバイス割り当て情報を報告します。
device-name:device-type:device-list
エントリを次の行に続けるには、行末にバックスラッシュ (\) を付けます。コメントも挿入できます。# を付けると、それに続くすべてのテキストは、行末にバックスラッシュ (\) のない次の改行までコメントになります。どのフィールドでも先行ブランクと後続ブランクを使用できます。
表 23–9 device_maps エントリ内のフィールドの説明
次の例では、SCSI テープ st0 とフロッピーディスク fd0 の device_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 ファイルの例を次に示します。
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 フィールド内のアスタリスクは、そのデバイスが割り当て可能でないことをシステムに示します。つまり、システム管理者はユーザーにデバイスを使用する前に割り当てたり、あとで割り当てを解除するように要求したりする必要がありません。このフィールドに他の文字列が入っている場合は、デバイスが割り当て可能であることを示します。
device-name;device-type;reserved;reserved;alloc;device-clean |
たとえば、次の行はデバイス名 st0 のエントリを示しています。
st0;st;;;;;/etc/security/lib/st_clean |
エントリを次の行に続けるには、行末にバックスラッシュ (\) を付けます。コメントも挿入できます。# を付けると、それに続くすべてのテキストは、行末にバックスラッシュ (\) のない次の改行までコメントになります。どのフィールドでも先行ブランクと後続ブランクを使用できます。
次の表では、device_allocate ファイル内の各フィールドについて詳しく説明します。
表 23–10 device_allocate エントリ内のフィールドの説明
「デバイスクリーン」スクリプトは、使用可能なすべてのデータを再使用する前に物理デバイスからパージするというセキュリティ要件に対応するものです。デフォルトでは、カートリッジテープドライブ、フロッピーディスクドライブ、CD-ROM デバイス、オーディオデバイスには、必要なデバイスクリーンスクリプトが用意されています。この節では、デバイスクリーンスクリプトが実行する処理について説明します。
デバイス割り当てによって、オブジェクト再使用の要件の一部が満たされます。デバイスクリーンスクリプトによって、あるユーザーがデバイスに残したデータは確実にクリアされます。データのクリアは、そのデバイスが別のユーザーによって割り当て可能になる前に実行されます。
st_clean デバイスクリーンスクリプトでは、3 つのテープデバイスがサポートされます。サポートされるテープデバイスは次のとおりです。
SCSI 1/4 インチテープ
Archive 1/4 インチテープ
オープンリール 1/2 インチテープ
st_cleanスクリプトでは、mt コマンドの rewofflオプションを使用して、デバイスのクリーンアップを制御します。詳細は、mt(1) のマニュアルページを参照してください。このスクリプトは、システムブート中に実行されると、デバイスを照会します。スクリプトは、そのデバイスがオンラインになっているかどうかを調べます。デバイスがオンラインになっていた場合、スクリプトはさらに、そのデバイスにメディアが挿入されているかどうかを調べます。1/4 インチのテープデバイスにメディアが挿入されていた場合、このデバイスは割り当てエラー状態になります。このため、管理者はそのデバイスを手動でクリーンアップする必要があります。
通常のシステム操作中に、allocate または deallocate コマンドを対話型モードで実行すると、メディアを取り出すように求めるプロンプトが表示されます。スクリプトは、メディアがデバイスから取り出されるまで一時停止します。
次の表に、フロッピーディスクとCD-ROM 用のデバイスクリーンスクリプトを示します。
表 23–11 フロッピーディスクと CD-ROM 用のデバイスクリーンスクリプト
ディスクデバイスの種類 |
デバイスクリーンスクリプト |
---|---|
フロッピーディスク | |
CD-ROM |
スクリプトは、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 を使用すると、スクリプトに実行モードを判断させることができます。次の表は、オプションの一覧です。
表 23–12 デバイスクリーンスクリプトのオプション
この節では、デバイス割り当てメカニズムの機能について例を挙げて説明します。
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/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 |