ファイルシステムのラベルの範囲は、ファイルシステムに含まれるデータの機密度の上限と下限を指定します。getcmwfsrange() と fgetcmwfsrange() システムコールは、ファイルシステムの機密ラベル範囲の上限と下限を含む構造体を返します。
上限と下限が等しくないファイルシステムには、ラベル範囲があります。このようなファイルシステムは、マルチラベルファイルシステムです。マルチラベルファイルシステムは、それぞれのファイルシステムオブジェクトに対しすべてのセキュリティ属性を個別にサポートします。
上限と下限が等しいファイルシステムは、シングルラベルファイルシステムです。この種のファイルシステムは、それぞれのファイルシステムオブジェクトに対しすべてのセキュリティ属性を個別にサポートします。
固定ファイルシステム - 上限と下限が等しいファイルシステムは、シングルラベルファイルシステムです。ファイルシステムのシステム機密ラベルは、vfstab_adjunct(4) に指定されたマウントで決定されます。シングルラベルファイルシステムは、ファイルシステムのセキュリティ属性をサポートしますが、すべてのファイルシステムオブジェクトのセキュリティ属性をサポートするわけではありません。
i ノードまたは vfstab_adjunct(4) 内のファイルシステムのセキュリティ属性を照会する方法は、第 2 章「プログラミングインタフェースの概要」の 「ファイルシステムのセキュリティ属性の照会」を参照してください。。
次の節では、プログラムがファイルシステムのラベル範囲を取得し、作業を継続する前に、機密ラベルをラベル範囲と照らしてテストする 2 つの事例を説明します。
前述の例で説明しているファイルの CMW ラベルの昇格を行う前に、ファイルの新しい機密ラベルがそのファイルの機密ラベルの範囲内であるか確認することをお勧めします。
次の例は、ASCII 文字列を新しいバイナリの機密ラベルに変換し、ファイルシステムのラベル範囲を取得し、新しい機密ラベルがそのファイルシステムのラベル範囲内であるか調べます。
#include <tsol/label.h> main() { int retval, error; bclabel_t fileCMWlabel; bslabel_t fsenslabel; brange_t range; char *string = "TOP SECRET"; /* 機密ラベルの新しい値を作成する */ retval = stobsl(string, &fsenslabel, NEW_LABEL, &error); /* ファイルシステムのラベル範囲を得る */ retval = getcmwfsrange("/export/home/zelda/afile", range); /* 機密ラベルがラベル範囲内かどうか調べる */ retval = blinrange(&fsenslabel, range); if(retval > 0) {/* ファイル CMW ラベルの昇格を実行する */} }
Solaris 7 インタフェースを使用してデバイスを割り当てて入力をデバイスに送る場合には、必ずデバイス特殊ファイルのラベル範囲を調べてください。デバイスに送られる入力は、デバイス特殊ファイルのラベル範囲内でなければなりません。