Trusted Solaris 管理の手順

アプリケーションに必要な特権を調べるには

  1. セキュリティ管理者役割になり、ADMIN_LOW ワークスペースに移動します。

    詳細は、「ログイン後、特定の管理役割になるには」を参照してください。

  2. (省略可能) 新しいプロファイルを作成し、そのプロファイルを管理役割に割り当てます。


    注 -

    デフォルトの構成において、セキュリティ管理者役割は runpd コマンドが割り当てられている唯一の役割です。この手順では、特権デバッグ専用の管理役割も作成できます。この役割を使うと、通常のユーザーがユーザー認可範囲内のラベルでコマンドを実行したとき、あるいは管理役割が管理ラベルのいずれかでコマンドを実行したとき、そのコマンドに必要な特権を見つけることができます。


    1. プロファイルマネージャを使って、/usr/sbin/runpd/bin/getfpriv、および /bin/setfpriv 特権、「システムをシャットダウン」「ログインを有効化」、および 「ファイルの特権を設定」 承認、さらに、必要であれば、「管理用エディタ (Admin Editor)」アクションを持つ新しいプロファイルを作成します。そして、/usr/sbin/runpd を実行する前に、役割が以下の手順に従って特権デバッグを実行できるように設定します。

    2. ユーザーマネージャを使って、管理役割 (たとえば prvdbg) を作成し、その役割に上記プロファイルを割り当てます。必要であれば、All プロファイルも割り当てます。

    3. 特権デバッグ役割をアカウントに割り当てます。

  3. 「管理用エディタ (Admin Editor)」アクションを使って、/etc/system ファイル内の tsol_privs_debug 設定を 1 に変更します。


    set tsol_privs_debug=1
    
  4. 「管理用エディタ (Admin Editor)」アクションを使って、/etc/syslog.conf ファイル内の kern.debug から始まる行の前にあるコメントマーク (#) を削除します。

    次の行は、システムコールやデーモンに必要な特権を /var/log/privdebug.log ファイルに記録します。


    kern.debug;daemon.debug;local0.debug  /var/log/privdebug.log
  5. 「トラステッドパス (TP)」メニューの「シャットダウン」オプションを使ってコンピュータをシャットダウンし、リブートします。


    ok  boot
    
  6. ログインし、セキュリティ管理者役割になります。あるいは、特権デバッグ専用の役割を作成した場合 (手順 2 を参照)、特権デバッグ専用の役割になります。

  7. 適切な機密ラベルを持つ端末エミュレータで、runpd コマンド、検査対象のコマンド、およびそのコマンドがどのように特権を使うのかを調べるためのオプションを (この順番で) 入力します。


    注 -

    ワークスペースの機密ラベルは、コマンドが通常実行される機密ラベルである必要があります。管理役割が管理ラベルでアプリケーションを実行することもあれば、一般ユーザーがユーザー認可範囲内のラベルで同じアプリケーションを実行することもあります。


    次の例に示すように、runpd は、プログラムが正常に実行されるために必要な特権の名前、試行されたアクセスの種類 (たとえば create)、資源の名前 (たとえば RAW_SOCKET) を並べて表示します。


    $ runpd pathname_of_command_and_any_options
    
    runpd: child terminated with a status of 0
    
    process pathname_of_command pid process_ID lacking privilege privilege_name
    to perform type_of_access upon resource resource_name (MM DD HH:MM) 

    次の例は、ping(1M)runpd(1M) を実行した結果を示しています。この例の目的は、ping の強制された特権が削除されていることを確認することです。


    $ runpd /usr/sbin/ping sif 
    sif is alive runpd: child terminated with a status of 0 
    process /usr/sbin/ping pid 5138 lacking privilege net_rawaccessto create raw
    socket (Oct 25 18:33) process /usr/sbin/ping pid 5138 lacking privilege sys_
    net_config to manage transport opts (Oct 25 18:33)
  8. ADMIN_HIGH ワークスペースに移動し、ログファイルに特権デバッグのメッセージがあるかどうかを調べます。

    次に、典型的な特権デバッグのログエントリを示します。


    $ cat /var/log/privdebug.log
    Mar 29 12:18:43 hostname unix: DEBUG: pathname_of_command pid 
    process_ID lacking privilege number to 
    number_of_type_of_access number_resource
    

    次の例は、pingrunpd を実行したときの privdebug.log エントリを示しています。


    Oct 25 18:33:35 tribble unix: DEBUG: /usr/sbin/ping pid 5138 lacking privilege
    36 to create raw socket
    Oct 25 18:33:35 tribble unix: DEBUG: /usr/sbin/ping pid 5138 lacking privilege
    68 to manage transport opts

    「privilege」の後に特権番号が表示されます。この特権番号を /usr/include/sys/tsol/priv_names.h ファイルで検索すると、特権の名前がわかります。たとえば、特権番号 36 は、net_rawaccess という名前の特権に割り当てられています。特権番号とその後の 「to」 に続く番号は、試行されたアクセスの種類で、その後に資源の番号が表示されます。

  9. 必要な特権を割り当てる方法については、「コマンドに強制された特権を付与するには」を参照してください。また、プロファイルマネージャを使用して継承可能な特権を割り当てる方法については、第 8 章「ユーザーおよび役割のための実行プロファイルの管理」を参照してください。


    注 -

    コマンドが強制された特権または継承可能な特権を使用するためには、その特権がコマンドの許容された特権セットで使用可能になっている必要があります。


  10. 特権デバッグを無効にするには、手順 3 から手順 4 までで変更した /etc/system ファイルと /etc/syslog.conf ファイルの内容をすべて元に戻し、コンピュータを再起動します。