Trusted Solaris 開発ガイド

プログラミングインタフェース宣言

次に、MLD と SLD の情報を取得するプログラミングインタフェースを示します。

システムコール

システムコールを使用して、SLD 名、MLD 装飾、SLD または MLD のファイル属性情報などを取得できます。

SLD 名の取得

getsldname(2) システムコールは、 path_name (パス名) に対する SLD 名を、指定された slabel (機密ラベル) で取得します。詳細は、getsldname(2) のマニュアルページを参照してください。fgetsldname(2) システムコールは、ファイル記述子を使用します。

int		getsldname(				const char *path_name,
 						const bslabel_t *slabel,
 						char *name_buf,
 						const int len);

 int		fgetsldname(				const int fd,
 						const bslabel_t *slabel_p,
 						char *name_buf,
 						const int len);

MLD 装飾の取得

getmldadorn(2) システムコールは、path_name に対する完全な装飾名を取得します。fgetmldadorn(2) システムコールは、ファイル記述子を使用します。詳細は、getmldadorn(2) のマニュアルページを参照してください。

int		getmldadorn(					const char *path_name,
 							char *adorn_buf[MLD_ADORN_MAX]);
 int		fgetmldadorn(					const int fd,
 							char adorn_buf[MLD_ADORN_MAX]);

SLD または MLD の属性情報の取得

mldstat(2) システムコールは、path_name によって指定された MLD のファイル属性情報を返します。mldlstat(2) システムコールは、MLD シンボリックリンクの情報を返します。詳細は、mldstat(2) のマニュアルページを参照してください。

int		mldstat(					const char *path_name,
 							struct stat *stat_buf);

 int		mldlstat(					const char *path_name,
 							struct stat *stat_buf);

MLD の属性フラグの取得

次のシステムコールの詳細は、第 2 章「プログラミングインタフェースの概要」「ファイルシステムのセキュリティ属性フラグの取得と設定」を参照してください。また、getfattrflag(2) のマニュアルページも参照してください。

int			mldgetfattrflag(								const char *path, secflgs_t *flags)
 int			mldsetfattrflag(								const char * path,
 											secflgs_t which,
 											secflgs_t flags))

ライブラリルーチン

ライブラリルーチンを使用して、現在の作業ディレクトリのパス名取得や、装飾を使用したパス名表示が行えます。

現在の作業ディレクトリの取得

次のルーチンは、現在の作業ディレクトリの完全な装飾名を取得します。詳細は、mldgetcwd(3) のマニュアルページを参照してください。

char*		mldgetcwd(				char *buf, size_t size);

装飾名の取得

次のルーチンは、path_name で指定された MLD に対する装飾名を取得します。詳細は、adornfc(3) のマニュアルページを参照してください。

int		adornfc(				const char *path_name,
 						char *adorned_name);

実際のパス名の検索

次のルーチンは、path_name で指定されたパス名を受け取り、すべてのシンボリックリンクを展開し、現在のディレクトリと親ディレクトリに対する相対パス名の参照を解決し、余分なスラッシュ文字を削除し、正しい MLD および SLD 装飾を加え、最終結果を resolved_path (解決済みパス) に格納します。この結果は、プロセスが動作している SLD、または指定された SLD のパス名を示します。詳細は、mldrealpath(3) のマニュアルページを参照してください。

char*		mldrealpath(				const char *path_name,
 						char *resolved_path);

 char	*	mldrealpathl(				const char *path_name,
 						char *resolved_path,
 						const bslabel_t *senslabel);