Trusted Solaris 開発ガイド

マルチレベルディレクトリ

マルチレベルディレクトリ (MLD) を使用すると、アプリケーションを複数の機密ラベルで実行し、プロセスが開始された機密ラベルでシングルレベルディレクトリ (SLD) のデータにアクセスできます。この例は、stobsl(3) を使用して ASCII 文字列をバイナリに変換し、そのバイナリラベルを getsldname(1) に渡すことによって、zelda MLD 内の Confidential の SLD の名前を取得する方法を示しています。/export/home/zelda MLD のラベルは ADMIN_LOW であり、プロセスは Confidential で実行しています。このプロセスには MLD に対する必須読み取りアクセスがあり、プロセスの機密ラベルが SLD の機密ラベルより優位であるため、プロセスは特権を必要としません。

#include <tsol/mld.h>

 char 				*file = "/export/home/zelda";
 char 				buffer[3*1024];
 bslabel_t				senslabel;
 int 				length, flags, retval, error;

 main()
 {
/* Confidential のSLD 名を得る */
 	retval = stobsl("CONFIDENTIAL", &senslabel, NEW_LABEL, &error);
 	length = sizeof(buffer);
 	retval = getsldname(file, &senslabel, buffer, length);
 	printf("SLD Name = %s¥n", buffer);
 }

printf 文によって、ラベルが ADMIN_LOW の SLD の名前が出力されます。SLD の名前の意味については、第 8 章「マルチレベルディレクトリ」を参照してください。

SLD Name = .SLD.2


注 -

mldstat(2)mldlstat(2) システムコールを使用すると、MLD、または MLD であるシンボリックリンクのファイル属性情報を表示できます。これらのシステムコールの詳細は、stat(2) のマニュアルページと第 8 章「マルチレベルディレクトリ」を参照してください。