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

第 4 章 デバイスアクセスの制御 (作業)

この章では、デバイスを保護するための作業について説明するとともに、参考となる節を示します。この章の内容は次のとおりです。

デバイスの保護についての概要は、「デバイスアクセスの制御」を参照してください。

デバイスの構成 (作業マップ)

次の作業マップは、デバイスへのアクセスを管理する作業を示しています。

作業 

参照先 

デバイスポリシーを管理します 

「デバイスポリシーの設定 (作業マップ)」

デバイス割り当てを管理します 

「デバイス割り当ての管理 (作業マップ)」

デバイス割り当てを実行します 

「デバイスの割り当て (作業マップ)」

デバイスポリシーの設定 (作業マップ)

次の作業マップは、デバイスポリシーに関連するデバイス構成作業の参照先を示しています。

作業 

説明 

参照先 

システム上のデバイスのデバイスポリシーを確認します 

デバイスとそれらのデバイスポリシーの一覧を表示します。 

「デバイスポリシーを表示する方法」

デバイス使用に対して特権を要求します 

特権を使用してデバイスを保護します。 

「既存のデバイスのデバイスポリシーを変更する方法」

デバイスから特権要件を削除します 

デバイスのアクセスに必要な特権を削除するか、そのレベルを下げます。 

例 4–3

デバイスポリシーの変更を監査します 

監査トレールでデバイスポリシーの変更を記録します 

「デバイスポリシーの変更を監査する方法」

/dev/arp にアクセスします

Solaris IP MIB-II 情報を取得します。 

/dev/* デバイスから IP MIB-II 情報を取得する方法」

デバイスポリシーの設定

デバイスポリシーは、システムに不可欠なデバイスに対するアクセスの制限または防止を行うものです。このポリシーはカーネルで適用されます。

Procedureデバイスポリシーを表示する方法

  1. システム上のすべてのデバイスのデバイスポリシーを表示します。


    % getdevpolicy | more
    DEFAULT
            read_priv_set=none
            write_priv_set=none
    ip:*
            read_priv_set=net_rawaccess
            write_priv_set=net_rawaccess
    …

例 4–1 特定のデバイスのデバイスポリシーを表示する

この例では、3 つのデバイスのデバイスポリシーが表示されています。


% getdevpolicy /dev/allkmem /dev/ipsecesp /dev/hme
/dev/allkmem
        read_priv_set=all
        write_priv_set=all
/dev/ipsecesp
        read_priv_set=sys_net_config
        write_priv_set=sys_net_config
/dev/hme
        read_priv_set=net_rawaccess
        write_priv_set=net_rawaccess

Procedure既存のデバイスのデバイスポリシーを変更する方法

  1. Device Security 権利プロファイルを含む役割を引き受けるか、あるいはスーパーユーザーになります。

    Primary Administrator 役割には、Device Security 権利プロファイルが含まれます。また、作成する役割に Device Security 権利プロファイルを割り当てることもできます。役割を作成してその役割をユーザーに割り当てる方法については、例 9–3 を参照してください。

  2. デバイスにポリシーを追加します。


    # update_drv -a -p policy device-driver
    
    -a

    device-driver 用の policy を指定します。

    -p policy

    device-driver のデバイスポリシーです。デバイスポリシーは、2 セットの特権を指定します。1 つは、デバイスの読み取りに必要です。もう 1 つは、デバイスへの書き込みに必要です。

    device-driver

    デバイスドライバです。

    詳細は、update_drv(1M) のマニュアルページを参照してください。


例 4–2 既存のデバイスにポリシーを追加する

次の例では、デバイス ipnat にデバイスポリシーが追加されています。


# getdevpolicy /dev/ipnat
/dev/ipnat
        read_priv_set=none
        write_priv_set=none
# update_drv -a \
-p 'read_priv_set=net_rawaccess write_priv_set=net_rawaccess' ipnat
# getdevpolicy /dev/ipnat
/dev/ipnat
        read_priv_set=net_rawaccess
        write_priv_set=net_rawaccess


例 4–3 デバイスからポリシーを削除する

次の例では、デバイス ipnat のデバイスポリシーから読み取り特権セットが削除されます。


# getdevpolicy /dev/ipnat
/dev/ipnat
        read_priv_set=net_rawaccess
        write_priv_set=net_rawaccess
# update_drv -a -p write_priv_set=net_rawaccess ipnat
# getdevpolicy /dev/ipnat
/dev/ipnat
        read_priv_set=none
        write_priv_set=net_rawaccess

Procedureデバイスポリシーの変更を監査する方法

デフォルトでは、as 監査クラスに、AUE_MODDEVPLCY 監査イベントが含まれます。

  1. Primary Administrator 役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. AUE_MODDEVPLCY 監査イベントを含む監査クラスをあらかじめ選択します。

    audit_control ファイルの flags 行に as クラスを追加してください。このファイルは次のようになります。


    # audit_control file
    dir:/var/audit
    flags:lo,as
    minfree:20
    naflags:lo

    詳しい操作説明は、audit_control ファイルの変更方法」を参照してください。

Procedure/dev/* デバイスから IP MIB-II 情報を取得する方法

Solaris IP MIB-II 情報を取得するアプリケーションは、/dev/ip ではなく /dev/arp を開く必要があります。

  1. /dev/ip および /dev/arp のデバイスポリシーを決定します。


    % getdevpolicy /dev/ip /dev/arp
    /dev/ip
            read_priv_set=net_rawaccess
            write_priv_set=net_rawaccess
    /dev/arp
            read_priv_set=none
            write_priv_set=none

    /dev/ip の読み取りおよび書き込みには、net_rawaccess 特権が必要であることに注意してください。/dev/arp は特権を必要としません。

  2. /dev/arp を開き、tcp モジュールと udp モジュールをプッシュします。

    特権は不要です。この方法は、/dev/ip を開いて arptcp、および udp モジュールをプッシュするのと同じです。現在、/dev/ip を開くには特権が必要なため、/dev/arp メソッドを推奨します。

デバイス割り当ての管理 (作業マップ)

次の作業マップは、デバイス割り当ての有効化と設定について説明した箇所を示しています。デフォルトではデバイス割り当ては有効になっていません。デバイス割り当てを有効にしたあとで、「デバイスの割り当て (作業マップ)」を参照してください。

作業 

説明 

参照先 

デバイスを割り当て可能にします 

デバイスを一度に 1 人のユーザーに割り当てられるようにします。 

「デバイスを割り当て可能にする方法」

ユーザーによるデバイス割り当てを承認します 

デバイス割り当ての承認をユーザーに与えます。 

「ユーザーによるデバイス割り当てを承認する方法」

システム上の割り当て可能なデバイスを表示します 

割り当てが可能なデバイスと、そのデバイスの状態を一覧表示します。 

「デバイスの割り当て情報を表示する方法」

デバイスを強制的に割り当てます 

ただちにデバイスを使う必要があるユーザーにデバイスを割り当てます 

「デバイスの強制的な割り当て」

デバイスの割り当てを強制的に解除します 

現在ユーザーに割り当てられているデバイスの割り当てを解除します 

「デバイスの強制的な割り当て解除」

デバイスの割り当てプロパティーを変更します 

デバイス割り当ての要件を変更します 

「割り当て可能デバイスの変更方法」

デバイスクリーンスクリプトを作成します 

物理デバイスからデータを一掃します。 

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

デバイス割り当てを無効にします 

すべてのデバイスの割り当て制限を解除します。 

「監査サービスを無効にする方法」

デバイス割り当ての監査を行います 

デバイス割り当てを監査トレールに記録します 

「デバイス割り当てを監査する方法」

デバイス割り当ての管理

デバイス割り当ては、周辺機器に対するアクセスの制限または防止を行う作業です。制限は、ユーザーの割り当て時に適用されます。デフォルトでは、割り当て可能デバイスにアクセスする場合、ユーザーは承認を必要とします。

Procedureデバイスを割り当て可能にする方法

すでに bsmconv コマンドを実行して監査を有効にしている場合、システムではすでにデバイス割り当てが有効になっています。詳細は、bsmconv(1M) のマニュアルページを参照してください。

  1. Audit Control 権利プロファイルを含む役割を引き受けるか、あるいはスーパーユーザーになります。

    Primary Administrator 役割には、Audit Control 権利プロファイルが含まれます。また、作成する役割に Audit Control 権利プロファイルを割り当てることもできます。役割を作成してその役割をユーザーに割り当てる方法については、例 9–3 を参照してください。

  2. デバイス割り当てを有効にします。


    # bsmconv
    This script is used to enable the Basic Security Module (BSM).
    Shall we continue with the conversion now? [y/n] y
    bsmconv: INFO: checking startup file.
    bsmconv: INFO: move aside /etc/rc3.d/S81volmgt.
    bsmconv: INFO: turning on audit module.
    bsmconv: INFO: initializing device allocation files.
    
    The Basic Security Module is ready.
    If there were any errors, please fix them now.
    Configure BSM by editing files located in /etc/security.
    Reboot this system now to come up with BSM enabled.

    注 –

    Volume Management デーモン (/etc/rc3.d/S81volmgt) は、このコマンドによって無効になります。


Procedureユーザーによるデバイス割り当てを承認する方法

  1. Primary Administrator 役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. 適切な承認とコマンドが入った権利プロファイルを作成します。

    一般には、solaris.device.allocate 承認を含む権利プロファイルを作成します。「権利プロファイルを作成または変更する方法」に挙げられている説明に従って操作してください。権利プロファイルに、次に示すような適切なプロパティーを指定します。

    • 権利プロファイル名: Device Allocation

    • 付与される承認: solaris.device.allocate

    • セキュリティー属性を指定したコマンド: sys_mount 特権を指定した mountsys_mount 特権を指定した umount

  3. 権利プロファイルの役割を作成します。

    「GUI を使用して役割の作成および割り当てを行う方法」に挙げられている説明に従って操作してください。次に示す役割プロパティーを参考にしてください。

    • 役割名: devicealloc

    • 役割の完全名: Device Allocator

    • 役割の説明: Allocates and mounts allocated devices

    • 権利プロファイル: Device Allocation

      この権利プロファイルは、役割に含めるプロファイルのリストの先頭に配置する必要があります。

  4. デバイス割り当てを許可する各ユーザーに、この役割を割り当てます。

  5. これらのユーザーにデバイス割り当ての方法を教えます。

    リムーバブルメディアの割り当て例は、「デバイスを割り当てる方法」を参照してください。

    Volume Management デーモン (vold) が稼働していないため、リムーバブルメディアは自動的にはマウントされません。割り当て済みのデバイスをマウントする例については、「割り当て済みデバイスをマウントする方法」を参照してください。

Procedureデバイスの割り当て情報を表示する方法

始める前に

この作業を行うには、デバイス割り当てが有効になっていなければなりません。デバイス割り当てを有効にする方法については、「デバイスを割り当て可能にする方法」を参照してください。

  1. Device Security 権利プロファイルを含む役割を引き受けるか、あるいはスーパーユーザーになります。

    Primary Administrator 役割には、Device Security 権利プロファイルが含まれます。また、作成する役割に Device Security 権利プロファイルを割り当てることもできます。役割を作成してその役割をユーザーに割り当てる方法については、例 9–3 を参照してください。

  2. システム上の割り当て可能デバイスについての情報を表示します。


    # list_devices device-name
    

    device-name は次のいずれかです。

    • audio[n] – マイクとスピーカーです。

    • fd[n] – フロッピーディスクドライブです。

    • sr[n] – CD-ROM ドライブです。

    • st[n] – テープドライブです。

注意事項

list_devices コマンドが次のようなエラーメッセージを返す場合は、デバイス割り当てが有効になっていないか、情報を取得するために必要なアクセス権がありません。

list_devices: No device maps file entry for specified device.

コマンドを実行するには、デバイス割り当てを有効にし、solaris.device.revoke 承認のある役割を引き受けてください。

Procedureデバイスの強制的な割り当て

強制的な割り当ては、誰かがデバイスの割り当て解除を忘れた場合や、デバイスをただちに使用する必要がある場合などに行います。

始める前に

この処理を行うには、ユーザーまたは役割に solaris.device.revoke 承認がなければなりません。

  1. 自分の役割に適切な承認が含まれているか確認します。


    $ auths
    solaris.device.allocate solaris.device.revoke
  2. デバイスを必要としているユーザーにデバイスを強制的に割り当てます。

    この例では、テープドライブがユーザー jdoe に強制的に割り当てられます。


    $ allocate -U jdoe
    

Procedureデバイスの強制的な割り当て解除

ユーザーが割り当てたデバイスは、プロセスの終了時やそのユーザーのログアウトの際に自動的に割り当てが解除されることはありません。強制的な割り当て解除は、ユーザーがデバイスの割り当てを解除することを忘れた場合に行います。

始める前に

この処理を行うには、ユーザーまたは役割に solaris.device.revoke 承認がなければなりません。

  1. 自分の役割に適切な承認が含まれているか確認します。


    $ auths
    solaris.device.allocate solaris.device.revoke
  2. デバイスの割り当てを強制的に解除します。

    この例では、プリンタの割り当てが強制的に解除されます。現在、このプリンタはほかのユーザーが割り当てを行える状態にあります。


    $ deallocate -f /dev/lp/printer-1
    

Procedure割り当て可能デバイスの変更方法

  1. Device Security 権利プロファイルを含む役割を引き受けるか、あるいはスーパーユーザーになります。

    Primary Administrator 役割には、Device Security 権利プロファイルが含まれます。また、作成する役割に Device Security 権利プロファイルを割り当てることもできます。役割を作成してその役割をユーザーに割り当てる方法については、例 9–3 を参照してください。

  2. 承認が必要であるかどうかを指定するか、あるいは solaris.device.allocate 承認を指定します。

    device_allocate ファイルのデバイスエントリにある 5 つ目のフィールドを変更します。


    audio;audio;reserved;reserved;solaris.device.allocate;/etc/security/lib/audio_clean
    fd0;fd;reserved;reserved;solaris.device.allocate;/etc/security/lib/fd_clean
    sr0;sr;reserved;reserved;solaris.device.allocate;/etc/security/lib/sr_clean

    solaris.device.allocate は、デバイスの使用に solaris.device.allocate 承認が必要であることを示します。


例 4–4 任意のユーザーによるデバイス割り当てを許可する

次の例では、システム上のどのユーザーも任意のデバイスを割り当てることができます。device_allocate ファイルの各デバイスエントリ内にある 5 番目のフィールドは、単価記号 (@) に変更されました。


$ whoami
devicesec
$ vi /etc/security/device_allocate
audio;audio;reserved;reserved;@;/etc/security/lib/audio_clean
fd0;fd;reserved;reserved;@;/etc/security/lib/fd_clean
sr0;sr;reserved;reserved;@;/etc/security/lib/sr_clean
…


例 4–5 一部の周辺機器の使用を防止する

次の例では、オーディオデバイスの使用が禁止されています。device_allocate ファイルのオーディオデバイスエントリにある 5 番目のフィールドは、アスタリスク (*) に変更されました。


$ whoami
devicesec
$ vi /etc/security/device_allocate
audio;audio;reserved;reserved;*;/etc/security/lib/audio_clean
fd0;fd;reserved;reserved;solaris device.allocate;/etc/security/lib/fd_clean
sr0;sr;reserved;reserved;solaris device.allocate;/etc/security/lib/sr_clean
…


例 4–6 すべての周辺機器の使用を防止する

次の例では、使用できる周辺機器はありません。device_allocate ファイルの各デバイスエントリにある 5 番目のフィールドは、アスタリスク (*) に変更されました。


$ whoami
devicesec
$ vi /etc/security/device_allocate
audio;audio;reserved;reserved;*;/etc/security/lib/audio_clean
fd0;fd;reserved;reserved;*;/etc/security/lib/fd_clean
sr0;sr;reserved;reserved;*;/etc/security/lib/sr_clean
…

Procedureデバイス割り当てを監査する方法

デフォルトでは、デバイス割り当てコマンドは、監査クラス other の状態です。

  1. Primary Administrator 役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. 監査の対象となるように、ot クラスをあらかじめ選択します。

    audit_control ファイルの flags 行にクラス ot を追加してください。このファイルは次のようになります。


    # audit_control file
    dir:/var/audit
    flags:lo,ot
    minfree:20
    naflags:lo

    詳しい操作説明は、audit_control ファイルの変更方法」を参照してください。

デバイスの割り当て (作業マップ)

次の作業マップは、デバイスの割り当て方法を説明した手順を示しています。

作業 

説明 

参照先 

デバイスを割り当てます 

デバイスの使用を 1 人のユーザーだけに限定し、ほかのユーザーがそのデバイスを使用できないようにします。 

「デバイスを割り当てる方法」

割り当てられたデバイスをマウントします 

マウントが必要なデバイス (CD-ROM やフロッピーディスクなど) をユーザーが確認できるようにします。 

「割り当て済みデバイスをマウントする方法」

デバイスの割り当てを解除します 

割り当て可能なデバイスをほかのユーザーが使用できるようにします。 

「デバイスの割り当てを解除する方法」

デバイスの割り当て

デバイス割り当ては、一度に 1 人のユーザーだけが使用できるようにデバイスを予約 (確保) する作業です。マウントポイントが必要なデバイスはマウントする必要があります。

Procedureデバイスを割り当てる方法

始める前に

デバイス割り当ての有効化は、「デバイスを割り当て可能にする方法」に説明されている方法で行う必要があります。承認が必要な場合は、そのユーザーは承認を得ていなければなりません。

  1. デバイスを割り当てます。

    デバイス名でデバイスを指定します。


    % allocate device-name
    
  2. デバイスが割り当てられたことを検証します。

    同じコマンドをもう一度実行します。


    % allocate device-name
    allocate. Device already allocated.

例 4–7 マイクを割り当てる

この例では、ユーザー jdoe がマイク audio を割り当てます。


% whoami
jdoe
% allocate audio


例 4–8 プリンタを割り当てる

この例では、ユーザーがプリンタを割り当てます。このユーザーが printer-1 の割り当てを解除するか、このプリンタが強制的にほかのユーザーに割り当てられるまで、ほかのユーザーはこのプリンタを使用できません。


% allocate /dev/lp/printer-1

強制的な割り当て解除の例は、「デバイスの強制的な割り当て解除」を参照してください。



例 4–9 テープドライブを割り当てる

この例では、ユーザー jdoe がテープドライブ st0 を割り当てます。


% whoami
jdoe
% allocate st0

注意事項

allocate コマンドがデバイスを割り当てることができない場合は、コンソールウィンドウにエラーメッセージが表示されます。割り当てのエラーメッセージについては、allocate(1) のマニュアルページを参照してください。

Procedure割り当て済みデバイスをマウントする方法

始める前に

ユーザーまたは役割によってすでにデバイスが割り当てられています。デバイスをマウントするには、そのデバイスのマウントに必要な特権をそのユーザーまたは役割が保持していなければなりません。必要な特権を与える方法については、「ユーザーによるデバイス割り当てを承認する方法」を参照してください。

  1. デバイスの割り当てまたはマウントが行える役割を引き受けます。


    % su - role-name
    Password: <Type role-name password>
    $
  2. この役割のホームディレクトリにマウントポイントを作成し、このマウントポイントを保護します。

    このステップが必要なのは、マウントポイントが初めて必要になった時だけです。


    $ mkdir mount-point ; chmod 700 mount-point
    
  3. 割り当てが可能なデバイスを一覧表示します。


    $ list_devices -l
    List of allocatable devices
    
  4. デバイスを割り当てます。

    デバイス名でデバイスを指定します。


    $ allocate device-name
    
  5. デバイスをマウントします。


    $ mount -o ro -F filesystem-type device-path mount-point
    

    次に、各引数について説明します。

    -o ro

    デバイスは読み取り専用としてマウントされることを示します。デバイスに書き込みができるように指定するには、-o rw を使用します。

    -F filesystem-type

    デバイスのファイルシステムフォーマットを示します。一般に、CD-ROM は HSFS ファイルシステムでフォーマットされています。フロッピーディスクは、一般に PCFS ファイルシステムでフォーマットされています。

    device-path

    デバイスへのパスを示します。list_devices -l コマンドの出力には、device-path が含まれます。

    mount-point

    手順 2 で作成したマウントポイントを示します。


例 4–10 フロッピーディスクドライブの割り当て

この例では、ユーザーはフロッピーディスクドラ イブ fd0 の割り当てとマウントが行える役割を引き受けます。このフロッピーディスクは、PCFS ファイルシステムでフォーマットされています。


% roles
devicealloc
% su - devicealloc
Password: <Type devicealloc password>
$ mkdir /home/devicealloc/mymnt
$ chmod 700 /home/devicealloc/mymnt
$ list_devices -l
...
device: fd0 type: fd files: /dev/diskette /dev/rdiskette /dev/fd0a
...
$ allocate fd0
$ mount -o ro -F pcfs /dev/diskette /home/devicealloc/mymnt
$ ls /home/devicealloc/mymnt
List of the contents of diskette


例 4–11 CD-ROM ドライブを割り当てる

この例では、ユーザーは CD-ROM ドライブ sr0 の割り当てとマウントが行える役割を引き受けます。このドライブは、HSFS ファイルシステムでフォーマットされています。


% roles
devicealloc
% su - devicealloc
Password: <Type devicealloc password>
$ mkdir /home/devicealloc/mymnt
$ chmod 700 /home/devicealloc/mymnt
$ list_devices -l
...
device: sr0 type: sr files: /dev/sr0 /dev/rsr0 /dev/dsk/c0t2d0s0 ...
...
$ allocate sr0
$ mount -o ro -F hsfs /dev/sr0 /home/devicealloc/mymnt
$ cd /home/devicealloc/mymnt ; ls
List of the contents of CD-ROM

注意事項

mount コマンドがデバイスをマウントできない場合は、「mount: insufficient privileges」というエラーメッセージが表示されます。次の点を確認します。

以上の要件を満たしているにもかかわらず割り当て済みデバイスをマウントできないという場合は、管理者に問い合わせてください。

Procedureデバイスの割り当てを解除する方法

割り当てを解除すると、ほかのユーザーもユーザーの使用後にそのデバイスを割り当てて使用できるようになります。

始める前に

デバイスをすでに割り当てていなければなりません。

  1. デバイスがマウントされている場合は、デバイスのマウントを解除します。


    $ cd $HOME
    $ umount mount-point
    
  2. デバイスの割り当てを解除します。


    $ deallocate device-name
    

例 4–12 マイクの割り当てを解除する

この例では、ユーザー jdoe がマイク audio の割り当てを解除します。


% whoami
jdoe
% deallocate audio


例 4–13 CD-ROM ドライブの割り当てを解除する

この例では、Device Allocator 役割が、CD-ROM ドライブの割り当てを解除します。次のメッセージが表示されたあとで、CD-ROM が取り出されます。


$ whoami
devicealloc
$ cd /home/devicealloc
$ umount /home/devicealloc/mymnt
$ ls /home/devicealloc/mymnt
$ 
$ deallocate sr0
/dev/sr0:      326o
/dev/rsr0:     326o
…
sr_clean: Media in sr0 is ready.  Please, label and store safely.

デバイスの保護 (参照)

Solaris OS では、デバイスはデバイスポリシーによって保護されます。周辺機器は、デバイス割り当てによって保護できます。デバイスポリシーはカーネルによって適用されます。デバイス割り当ては、ユーザーレベルで任意に有効化と適用が行われます。

デバイスポリシーコマンド

デバイス管理コマンドは、ローカルファイルのデバイスポリシーを管理するコマンドです。デバイスポリシーは特権要件を含むことができます。デバイスを管理できるのは、スーパーユーザーと、スーパーユーザーと同等の能力を持つ役割だけです。

次の表は、デバイス管理コマンドを示しています。

表 4–1 デバイス管理コマンド

コマンド 

目的 

マニュアルページ 

devfsadm

稼働しているシステム上のデバイスとデバイスドライバを管理します。また、デバイスポリシーの読み込みも行います。 

devfsadm コマンドは、ディスクデバイス、テープデバイス、ポートデバイス、オーディオデバイス、および擬似デバイスに対する /dev リンクのクリーンアップにも使用できます。名前付きドライバのデバイスの再構成も行えます。

devfsadm(1M)

getdevpolicy

1 つ以上のデバイスに関連付けられたポリシーを表示します。このコマンドはどのユーザーでも実行できます。 

getdevpolicy(1M)

add_drv

稼働中のシステムに新しいデバイスドライバを追加します。新しいデバイスにデバイスポリシーを追加するオプションを含みます。一般に、このコマンドはデバイスドライバのインストール中にスクリプト内で呼び出されます。 

add_drv(1M)

update_drv

既存のデバイスドライバの属性を更新します。デバイスのデバイスポリシーを更新するオプションを含みます。一般に、このコマンドはデバイスドライバのインストール中にスクリプト内で呼び出されます。 

update_drv(1M)

rem_drv

デバイスまたはデバイスドライバを削除します。 

rem_drv(1M)

デバイスの割り当て

デバイス割り当てによって、データの消失、コンピュータウイルス、セキュリティー侵害などからサイトを保護できます。デバイスポリシーと違い、デバイス割り当ては任意です。デバイスは、bsmconv スクリプトが実行されるまで割り当てることはできません。デバイス割り当ては、割り当て可能デバイスへのアクセスを制限するのに承認を使用します。

デバイス割り当ての構成要素

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

これらのコマンドとスクリプトは、次のローカルファイルを使用してデバイス割り当てを実装します。


注 –

/etc/security/dev ディレクトリは、将来の Solaris OS リリースでサポートされなくなる可能性があります。


デバイス割り当てコマンド

大文字のオプションが指定された allocatedeallocate、および list_devices コマンドは管理用コマンドです。それ以外ではこれらのコマンドはユーザーコマンドです。次の表は、デバイス割り当てコマンドを示しています。

表 4–2 デバイス割り当てコマンド

コマンド 

目的 

マニュアルページ 

bsmconv

デバイス割り当てを処理するデータベースを作成します。監査サービスの有効化も行います。スーパーユーザーであるか、Primary Administrator 役割を引き受ける必要があります。 

bsmconv(1M)

dminfo

デバイスタイプ、デバイス名、またはフルパス名を指定して、割り当て可能デバイスを検索します。 

dminfo(1M)

list_devices

割り当て可能なデバイスの状態を表示します。 

device_maps ファイルにリストされたデバイスに関連付けられている、デバイス特殊ファイルを列挙します。

list_devices(1)

list_devices -U

割り当て可能なデバイスを一覧表示するか、あるいは特定のユーザー ID に割り当てられているデバイスを一覧表示します。このオプションを使用すると、別のユーザーに割り当てることができるデバイスまたは割り当て済みのデバイスを確認できます。このコマンドを実行するには、ユーザーまたは役割に solaris.device.revoke 承認がなければなりません。

 

allocate

1 人のユーザーだけが使用できるように割り当て可能デバイスを予約します。 

デフォルトでは、ユーザーはデバイス割り当てを行うのに solaris.device.allocate 承認が必要です。ユーザー承認を必要としないように、device_allocate ファイルを変更することもできます。そのように変更した場合、システム上のどのユーザーでもデバイスの使用割り当てを要求できます。

allocate(1)

deallocate

デバイスから割り当て予約を削除します。 

deallocate(1)

割り当てコマンドの承認

デフォルトでは、ユーザーが割り当て可能デバイスを予約するには solaris.device.allocate 承認を必要とします。solaris.device.allocate 承認を含める権利プロファイルを作成する方法については、「ユーザーによるデバイス割り当てを承認する方法」を参照してください。

管理者がデバイスの割り当て状態を変更するには、どのデバイスの場合でも、solaris.device.revoke 承認が必要です。たとえば、allocate および list_devices コマンドの -U オプションや、deallocate コマンドの -F オプションは、solaris.device.revoke 承認が必要です。

詳細は、 「承認を必要とするコマンド」を参照してください。

割り当てエラー状態

deallocate コマンドが割り当ての解除に失敗する場合、または allocate コマンドが割り当てに失敗する場合は、デバイスは「割り当てエラー状態」になります。割り当て可能デバイスが割り当てエラー状態となった場合、そのデバイスの割り当てを強制的に解除する必要があります。割り当てエラー状態を処理できるのは、スーパーユーザーか、あるいは Device Management 権利プロファイルまたは Device Security 権利プロファイルを持った役割だけです。

F オプションを指定した -deallocate コマンドは、割り当て解除を強制します。あるいは、allocate -U を実行してデバイスを特定のユーザーに割り当てることもできます。いったんデバイスが割り当てられると、発生したエラーメッセージを調査できます。デバイスに関する問題が解決されたあとで、そのデバイスの割り当てを強制的に解除できます。

device_maps ファイル

デバイス割り当てを設定すると、デバイスマップが作成されます。監査サービスが有効になる際には、bsmconv コマンドによってデフォルトの /etc/security/device_maps ファイルが作成されます。この当初の device_maps ファイルは、サイトに合わせてカスタマイズできます。device_maps ファイルには、デバイス名、デバイスの種類のほか、各割り当て可能デバイスに関連付けられたデバイス特殊ファイルが記録されます。

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

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


device-name:device-type:device-list

例 4–14 device_maps エントリの例

次に、フロッピーディスクドライブ fd0device_maps ファイル内にあるエントリの例を示します。


fd0:\
        fd:\
        /dev/diskette /dev/rdiskette /dev/fd0a /dev/rfd0a \
/dev/fd0b /dev/rfd0b /dev/fd0c /dev/fd0 /dev/rfd0c /dev/rfd0:\

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

device-name

デバイスの名前を指定します。現在のデバイス名の一覧を表示する方法については、「デバイスの割り当て情報を表示する方法」を参照してください。

device-type

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

device-list

物理デバイスに関連付けられたデバイス特殊ファイルを一覧表示します。device-list には、特定のデバイスにアクセスできるすべての特殊ファイルが含まれている必要があります。リストが不完全な場合は、悪意を持ったユーザーでも個人情報を入手または変更できます。device-list フィールドには、/dev ディレクトリに入っているデバイスファイルを指定します。

device_allocate ファイル

当初の /etc/security/device_allocate ファイルは、監査サービスを有効にする際に bsmconv コマンドによって作成されます。この当初の 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

device_allocate ファイル内のエントリは、デバイスが割り当て可能であると特に記述されていない限り、そのデバイスが割り当て可能であることを意味しません。上述の device_allocate ファイルの例では、オーディオデバイスエントリの第 5 フィールドにアスタリスク (*) が指定されています。第 5 フィールド内のアスタリスクは、そのデバイスが割り当て可能でないことをシステムに示します。つまり、このデバイスは使用できません。このフィールドにほかの値が入っているか、あるいは値が入っていない場合は、デバイスが使用可能であることを示します。

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


device-name;device-type;reserved;reserved;auths;device-exec

device_allocate ファイル内の行は、バックスラッシュ (\) で終了することで次の行のエントリに継続できます。コメントも挿入できます。ポンド記号 (#) を付けると、1 つ前の行末にバックスラッシュのない改行まで、それに続くすべてのテキストはコメントになります。どのフィールドでも先行ブランクと後続ブランクを使用できます。フィールドの定義は次のとおりです。

device-name

デバイスの名前を指定します。現在のデバイス名の一覧を表示する方法については、「デバイスの割り当て情報を表示する方法」を参照してください。

device-type

汎用デバイスタイプを指定します。汎用名は、stfdsr などのデバイスクラス名です。device-type では、関連するデバイスが論理的にグループ化されます。デバイスを割り当て可能にするときは、device_maps ファイルの device-type フィールドからデバイス名を取得します。

reserved

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

auths

デバイスが割り当て可能かどうかを示します。このフィールドにアスタリスク (*) が入っている場合は、デバイスが割り当て不可能であることを示します。承認を示す文字列が入っている場合や、空の場合は、デバイスが割り当て可能であることを示します。たとえば、auths フィールドの文字列 solaris.device.allocate は、そのデバイスを割り当てるには solaris.device.allocate 承認が必要であることを示します。このフィールドに単価記号 (@) が入っている場合は、どのユーザーでもそのデバイスを割り当てることができることを示します。

device-exec

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

たとえば、sr0 デバイスについての次のエントリは、CD-ROM ドライブが solaris.device.allocate 承認を得たユーザーによって割り当て可能であることを示します。


sr0;sr;reserved;reserved;solaris.device.allocate;/etc/security/lib/sr_clean

デフォルトのデバイスと、その定義済み特性をそのまま使用することもできます。新しいデバイスをインストールしたあとで、エントリを変更できます。使用前に割り当てが必要なデバイスはすべて、そのデバイスのシステムの device_allocate ファイルと device_maps ファイルで定義する必要があります。現在、カートリッジテープドライブ、フロッピーディスクドライブ、CD-ROM ドライブ、およびオーディオチップが、割り当て可能とみなされます。これらのデバイスタイプには、デバイスクリーンスクリプトが用意されています。


注 –

Xylogics テープドライブやアーカイブテープドライブも、SCSI デバイス用の st_clean スクリプトを使用します。モデム、端末、グラフィックスタブレットなどの割り当て可能デバイスについては、独自のデバイスクリーンスクリプトを作成する必要があります。このスクリプトは、対応するデバイスタイプのオブジェクト再使用の要件を満たしている必要があります。


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

デバイス割り当てによって、いわゆるオブジェクト再使用要件の一部が満たされます。「デバイスクリーン」スクリプトは、使用可能なすべてのデータを再使用する前に物理デバイスからパージするというセキュリティー要件に対応するものです。データのクリアは、そのデバイスが別のユーザーによって割り当て可能になる前に実行されます。デフォルトでは、カートリッジテープドライブ、フロッピーディスクドライブ、CD-ROM ドライブ、オーディオデバイスは、デバイスクリーンスクリプトが必要です。このスクリプトは Solaris OS に付属しています。この節では、デバイスクリーンスクリプトが実行する処理について説明します。

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

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

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

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

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

フロッピーディスクドライブと CD-ROM ドライブ用として、次のデバイスクリーンスクリプトが提供されています。

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

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

オーディオデバイスは、audio_clean スクリプトを使用してクリーンアップします。スクリプトは、AUDIO_GETINFO ioctl システムコールを実行してデバイスを読み取ります。AUDIO_SETINFO ioctl システムコールを実行してデバイス構成をデフォルトにリセットします。

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

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


clean-script -[I|i|f|S] device-name

デバイスクリーンスクリプトは、成功時には「0」を、失敗時には「0」より大きな値を、それぞれ返す必要があります。オプション -I-f、および -S は、スクリプトの実行モードを決定します。

-I

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

-i

出力が抑止される点を除き、-I オプションと同じです。

-f

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

-S

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