誤ってラベルの異なるファイルを一緒にしてしまうことがないように、Trusted Solaris 環境には、マルチレベルディレクトリとシングルレベルディレクトリという 2 種類の特別なディレクトリが用意されています。
「マルチレベルディレクトリ (MLD)」は、機密ラベルの異なったファイルやディレクトリを一緒に格納するためのディレクトリです。ホームディレクトリは、典型的なマルチレベルディレクトリです。
マルチレベルディレクトリには、ディレクトリ名の先頭に「.MLD.」という隠し文字列 (装飾名) が付きます。装飾名は、標準の UNIX コマンドでは表示されません。これを表示するには、特殊な装飾名コマンド (表 1-3) を使用します。
「シングルレベルディレクトリ (SLD)」は、同じ機密ラベルのファイルやディレクトリを格納する隠しディレクトリです。新しいファイルやディレクトリを作成したりマルチレベルディレクトリに移動したりすると、そのファイルやディレクトリは、自分と同じ機密ラベルを持つシングルレベルディレクトリに自動的に格納されます。同じ機密ラベルのシングルレベルディレクトリがまだない場合は、Trusted Solaris によって自動的に作成されます。
シングルレベルディレクトリの装飾名は、「.SLD.」という文字列です。シングルレベルディレクトリには、作成された順に、.SLD.0、.SLD.1 というように名前が付けられます。装飾名は、表 1-3 に示す特殊なコマンドを使用しない限り、通常は表示されません。
隠しディレクトリの内容を表示するためには、装飾名を明示してパスを指定します。たとえば、「TOP SECRET A B」という機密ラベルで作業しているときに ls と入力すると、「TS A B」のファイルとディレクトリが格納されるシングルレベルディレクトリの内容 (図 1-7) しか表示できませんが、ls /.MLD.myHomeDir/.SLD.* と入力すると、適切な特権を持っていれば、マルチレベルディレクトリ内のすべての隠しディレクトリを表示できます (図 1-8)。この図の左側はユーザーが入力するコマンドを示し、右側はディレクトリ構造を示しています。ディレクトリは楕円形、ファイルは長方形で表し、コマンド入力の結果表示されるアイテム名は実線と太字で、隠しアイテム名 (表示されない) は破線と標準フォントで表します。
Trusted Solaris 環境には、シングルレベルディレクトリとマルチレベルディレクトリの装飾名を表示するための特殊なコマンドが用意されています。次の表に、これらのコマンドと機能を示します。
表 1-3 装飾名コマンド
コマンド名 |
機能 |
---|---|
adornfc(1) |
指定したディレクトリパス名に装飾名を付けて表示する。装飾名は、マルチレベルディレクトリであれば文字列 .MLD. (MLD 装飾名)、シングルレベルディレクトリであれば .SLD. (SLD 装飾名) となる |
getmldadorn(1) |
指定したパス名が存在するファイルシステムの MLD 装飾名を表示する |
getsldname(1) |
マルチレベルディレクトリのパス名を指定し、そこにあるシングルレベルディレクトリのうち、現在のプロセスの機密ラベルに対応するものを表示する |
mldpwd(1) |
現在作業中のディレクトリのパス名に MLD 装飾名や SLD 装飾名を付けて表示する |
mldrealpath(1) |
MLD 装飾名や SLD 装飾名を付けて、正式な絶対パス名を表示する。すべてのシンボリックリンクが展開され、特殊文字 (/. や /..) 部分が解釈されるため、結果的に、すべてのディレクトリに MLD 装飾名や SLD 装飾名が付き、特殊文字を一切使わない状態で、パス名が表示される |