名前 | 形式 | 機能説明 | 属性 | 戻り値 | エラー | 警告 | 関連項目
#include <tsol/label.h>int getsldname(char *path_name, bslabel_t *slabel_p, char *name_buf, const int length);
getsldname() は、path_name があるファイルシステムのコンテキスト内で slabel_p が参照している機密ラベルに対応する SLD 名を返します。path_name は、マウントされているファイルシステム内のマルチレベルディレクトリのパス名です。name_buf は、SLD_NAME_MAX の値以上のバイト数をもつバッファへのポインタです。
fgetsldname() は、記述子 fd が参照する MLD が完全装飾のマルチレベルディレクトリ名ではないディレクトリ名で開かれている場合に、slabel_p が参照する機密ラベルに対応する SLD 名を返します。記述子 fd が参照する MLD が完全装飾のマルチレベルディレクトリ名を使って開かれていると、fgetsldname() は、slabel_p が参照する機密ラベルに対応する MLD と SLD 名を返します。
slabel_p に対応するシングルレベルディレクトリが存在しない場合は、親マルチレベルディレクトリの属性、指定された機密ラベル、ADMIN_LOW
情報ラベルを使ってディレクトリが作成されます。呼び出し元プロセスと slabel_p の機密ラベルが等しければ、新たな特権は必要ありません。slabel_p の機密ラベルが呼び出し元プロセスの機密ラベルより完全に優位にある場合は、呼び出し元プロセスで PRIV_FILE_UPGRADE_SL
特権を表明すればディレクトリを作成できます。そうでない場合は、PRIV_FILE_DOWNGRADE_SL
特権を表明すればディレクトリを作成できます。
次の属性の説明については、attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
---|---|
使用条件 | SUNWtsu |
次の条件のどれかが該当する場合、getsldname() の処理は失敗します。
path_name のパス接頭辞の構成要素に対する検索権限が拒否されています。この制約を除くには、呼び出し元プロセスで PRIV_FILE_DAC_SEARCH
か PRIV_FILE_MAC_SEARCH
特権の一方または両方を表明します。
指定されたシングルレベルディレクトリが存在しません。システム構成ではシングルレベルディレクトリの作成に書き込み権が必要になっていますが、呼び出し元プロセスには path_name への任意書き込み権がありません。この制約を除くには、呼び出し元プロセスで PRIV_FILE_DAC_WRITE
特権を表明します。
name_buf、path_name、slabel_p が無効なアドレスを指しています。
ファイルシステムに対する読み取りか書き込みで入出力エラーが発生しました。
path_name を変換するときに検出されたシンボリックリンクの数が多すぎます。
パス引数の長さが PATH_MAX 値を超えています。
_POSIX_NO_TRUNC が有効なときにパス名の構成要素の長さが NAME_MAX [sysconf(3C) を参照] を超えています[ pathconf(2) のマニュアルページを参照]。
path_name で参照されているファイルが存在しません。
path_name のパス接頭辞にディレクトリでない構成要素があります。
slabel_p に対応する SLD が存在しません。そして、次のどちらかの条件が該当します。slabel_p の機密ラベルが呼び出し元プロセスの機密ラベルより完全に優位にあり、呼び出し元プロセスが PRIV_FILE_DOWNGRADE
特権を表明していない。または、slabel_p が呼び出し元プロセスの機密ラベルより優位にはなく、呼び出し元プロセスが PRIV_FILE_DOWNGRADE_SL
特権を表明していない。
次の条件のどれかが該当する場合、fgetsldname() の処理は失敗します。
fd はファイルを開くための有効な記述子ではありません。
name_buf か slabel_p が無効なアドレスを指しています。
fd がマルチレベルディレクトリを参照していません。
ファイルシステムの読み取りで入出力エラーが発生しました。
slabel_p に対応する SLD が存在しません。そして、次のどちらかの条件が該当します。slabel_p の機密ラベルが呼び出し元プロセスの機密ラベルより完全に優位にあり、呼び出し元プロセスが PRIV_FILE_UPGRADE_SL
特権を表明していない。または、slabel_p の機密ラベルが呼び出し元プロセスの機密ラベルより優位にはなく、呼び出し元プロセスが PRIV_FILE_DOWNGRADE_SL
特権を表明していません。
path_name を含むファイルシステムか、fd で参照されるオブジェクトが MLD をサポートしていない場合、エラーは返されません。name_buf の最初の SLD_NAME_MAX
バイトが消去されます。