特権が必要なあらゆるアプリケーションで使用するためには、共有ライブラリはトラステッドである必要があります。Trusted Solaris では、特権を持つアプリケーションと共有ライブラリの動的なリンクは制限されています。これは、特権を持つアプリケーションが非トラステッドライブラリを使用することを防ぐためです。特権を持つアプリケーションが非トラステッドライブラリへのリンクを試みると、「エラー : **** ライブラリを読み込むことができません。」などのエラーが表示され、失敗します。
この節以降では、トラステッドライブラリに動的にリンクするため特権を持つアプリケーションをどのように設定するかを理解するために、開発者が知る必要のある事柄を次の点を含めて説明します。
トラステッドライブラリのデフォルトのディレクトリ位置
標準でないトラステッドライブラリディレクトリのパス名の指定方法
デフォルトのトラステッド共有ライブラリは、表 A-1 に示すディレクトリに格納されています。
表 A-1 トラステッド共有ライブラリのデフォルトディレクトリ
トラステッド C 関数ライブラリ |
X Server に対するトラステッド拡張機能 |
---|---|
/usr/lib |
/usr/openwin/lib |
/etc/lib |
/usr/dt/lib |
表 A-1 に示したディレクトリは、必須アクセス制御と任意アクセス制御によって、承認のない変更が行われないように保護されます。
特権を持つプログラムは、表 A-1 に示されたデフォルトに対応する LD_LIBRARY_PATH ディレクトリのサブセットと、セキュリティ管理者が rtld ファイルに挙げたディレクトリだけを検索します (rtld ファイルについては、「他社またはサイトで作成したアプリケーションが使用する共有ライブラリ」を参照)。そのため、トラステッドライブラリに対し標準以外の位置を指定する必要がある場合、開発者は、プログラムの LD_LIBRARY_PATH 環境変数に、rtld ファイルに指定されたアプリケーションのトラステッドディレクトリを含める必要があります。
他社またはサイトで作成したアプリケーションにサイトのセキュリティ管理者から特権が付与される場合、トラステッドアプリケーションが使用している共有ライブラリは、可能なかぎり表 A-1 に示すデフォルトのトラステッド共有ライブラリのどれかに移動しなければなりません。セキュリティ管理者は /etc/security/tsol の rtld ファイルに特権を持つアプリケーションのライブラリのディレクトリパス名をリストすることができますが、ライブラリを既存のトラステッドディレクトリの 1 つに移動できない場合にだけそのように処理してください。プログラムの実行時には、rtld にリストされたライブラリはすべて LD_LIBRARY_PATH 変数に指定されている必要があります。
特権が付与されているアプリケーションはすべて、トラステッドになります。特権を付与するセキュリティ管理者は、特権を使用するトラステッドプログラムが実際に信頼 (トラスト) できるかを確認する必要があります。rtld にリストされたアプリケーションのライブラリはどれもトラステッドになるため、指定されたディレクトリはデフォルトのライブラリディレクトリと同じレベルの保護を必要とします。セキュリティ管理者は、rtld にリストされたトラステッドライブラリディレクトリの MAC と DAC アクセス権およびそれらの内容が、デフォルトのトラステッドディレクトリライブラリのディレクトリおよびそれらの内容と同じであることを確認する必要があります。
オブジェクトファイルのリンカーと rtld ファイルの詳細は、ld(1) のマニュアルページを参照してください。
サイト外で作成された特権を持つ Java プログラムを移植する場合、セキュリティ管理者は、Java ライブラリのパス (たとえば /usr/java/lib) を使用して /etc/security/tsol/rtld を更新する必要があります。また、rtld に指定されたパス名が、アプリケーションの LD_LIBRARY_PATH 変数設定にも加えられていることを確認する必要があります。
開発者が特権を持つ Java アプリケーションをサイトで作成する場合には、サイトのセキュリティ管理者はその Java アプリケーションが使用するライブラリをトラステッドディレクトリの 1 つに移動し、そのライブラリが実行時に動的にリンクできるように設定できます。