Trusted Solaris 開発ガイド

開発、テスト、およびデバッグ

開発、テスト、およびデバッグは、メインシステム上のセキュリティポリシーにソフトウェアのバグや未完成のコードで害を与えないように、独立した開発システムで行うことをお勧めします。

特権デバッグ

特権デバッグモードについては、『Trusted Solaris 管理の手順』で説明しています。ここでは、特権デバッグを有効にする手順と、特権デバッグモードで runpd(1M) を使用してアプリケーションをテストする手順の概要を述べます。

  1. 特権デバッグモードは、必要な特権を持たないアプリケーションの実行を成功させ、どの特権が欠如しているかを示します。

  2. /etc/system ファイルで、tsol_privs_debug 変数を 1 に設定します。このファイルは ADMIN_LOW で、所有者はスーパーユーザー (root) です。

  3. /etc/syslog.conf ファイルで、kern.debug 行すなわち local0.debug 行のコメントを解除します。このファイルは ADMIN_LOW で、所有者は sys です。

  4. /var/log/privdebug.log ファイルが存在していなければ作成します。このファイルは ADMIN_HIGH で、所有者はスーパーユーザー (root) です。

  5. システムをリブートします。

  6. プロファイル内の runpd(1M) を使用して、管理役割を取得します。

  7. runpd(1M) コマンドを使用して、実行可能ファイルを起動し、欠如している特権がないか確認します。次のコマンド行は、Zelda の Confidential ホームディレクトリ内の実行可能ファイルを起動します。欠如している特権に関する情報が、コマンド行に表示されるとともに /var/log/privdebug.log ファイルに記録されます。


    phoenix# runpd /export/home/.MLD.Zelda/.SLD.2/executable
    
    runpd terminated with a status of 1
    
    process runpd pid 822 lacking privilege file_mac_search to 
    perform special method upon resource VNODE (Jan 29 12:45)
    
    process runpd pid 822 lacking privilege file_mac_read to 
    perform read method upon resource VNODE (Jan 29 12:45)
  8. /var/log/privdebug.log ファイル内の特権番号を解釈します。特権番号は、語句の特権の後に現れます。プロセス 822 には、file_mac_searchfile_mac_read に対応する特権番号 11 と 10 が欠如しています。


Jan 29 12:45:39 phoenix unix DEBUG: runpd pid 822 lacking 
privilege 11 to 5 79

Jan 29 12:45:39 phoenix unix DEBUG: runpd pid 822 lacking 
privilege 10 to 2 79

スクリプトを使用したファイル特権の割り当て

組織内のほかのユーザーに配布して使用させるための特権を持つスクリプトを作成する方法は、『Trusted Solaris 管理の手順』で説明しています。この節では、setfpriv(1) を使用するスクリプトを作成し、アプリケーション開発時にアプリケーションのテストとデバッグを行う実行可能ファイルに強制された特権と許容された特権を割り当てる方法の概要を述べます。

まず、作業対象のユーザーまたは役割に、setfpriv(1) コマンドを持つプロファイルとそれに対する file_setpriv 特権が必要です。このコマンドと特権は、デフォルトシステムのオブジェクト特権管理プロファイルに入っています。任意のシェルからスクリプトを実行し、スクリプトによって起動されたコマンドをそのプロファイルシェルで実行してプロファイル特権を継承させるには、次の例に示すようにスクリプトの先頭で pfsh(1M) を起動します。

この例は、executable (実行可能ファイル) に強制された特権と許容された特権を割り当てます。-s -f オプションは、executable に強制された特権を設定します。-a オプションは、executable に許容された特権を設定します。このスクリプトは、file_setpriv 特権がコマンドによって継承されないかぎり、「executable: not owner (executable : 所有者ではありません)」というエラーを出力して終了します。

#/bin/pfsh
 setfpriv -s -f 
ipc_mac_write,ipc_upgrade_il,proc_setsl,sys_trans_label -a 
ipc_mac_write,ipc_upgrade_il,proc_setsl,sys_trans_label executable

スクリプトを使用して実行可能ファイルに強制された特権と許容された特権を設定する場合、次の点に注意してください。


注 -

プログラムは、必ず実行時に使用するすべてのラベルでテストしてください。