名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目
cc [flag...] file... -ltsol [library...]
#include <tsol/label.h> int setflabel(const char *path, const m_label_t *label_p);
path により指定されたファイルは、label_p に対応するゾーンのルートディレクトリを基準とする新しいパス名に移動することで、再度ラベル付けされます。移動元および移動先のファイルシステムが、基盤をなす同一のファイルシステムからループバックマウントされている場合、ファイルの名前が変更されます。それ以外の場合、ファイルはコピーされて、移動元のディレクトリから削除されます。
この関数により、次のポリシーチェックが実行されます。
label_p の機密レベルが既存の機密レベルに等しい場合、ファイルは移動されません。
対応するディレクトリが移動先のゾーン内に存在しない場合、またはディレクトリは存在するが、label_p 以外のラベルが設定されている場合、ファイルは移動されません。また、移動先ディレクトリにファイルが既に存在する場合も、ファイルは移動されません。
既存のファイルの機密ラベルが呼び出し元プロセスのラベルと等価でなく、呼び出し元が大域ゾーン内にない場合、ファイルは移動されません。呼び出し元が大域ゾーン内に存在する場合、既存のファイルラベルは、ラベル付けされたゾーン (ADMIN_LOW または ADMIN_HIGH 以外) に存在する必要があります。
呼び出し元のプロセスが移動元と移動先の両方のディレクトリに書き込みアクセス権を持たない場合、呼び出し元プロセスは有効な特権セット内に PRIV_FILE_DAC_WRITE を保持している必要があります。
label_p の機密ラベルが、既存の機密ラベルへの読み取り専用アクセス権を提供する場合 (昇格)、ユーザーは solaris.label.file.upgrade 承認を保持している必要があります。また、現在のゾーンがラベル付けされたゾーンである場合は、ゾーンの設定時に PRIV_FILE_UPGRADE_SL 特権が割り当てられている必要があります。
label_p の機密ラベルが既存の機密ラベルへのアクセスを提供しない場合 (降格)、呼び出し元のユーザーは solaris.label.file.downgrade 承認を保持している必要があります。また、現在のゾーンがラベル付けされたゾーンである場合は、ゾーンの設定時に PRIV_FILE_DOWNGRADE_SL 特権が割り当てられている必要があります。
呼び出し元のプロセスが大域ゾーン内に存在せず、ユーザーが solaris.label.range 承認を保持しない場合、label_p はユーザーのラベル範囲内およびシステム認可範囲内に存在する必要があります。
既存のファイルが使用中の (トランキルでない) 場合、ファイルは移動されません。この使用中かどうかのチェックでは、競合状態もリモートファイルアクセスも検査されません。
シェルスクリプト /etc/security/tsol/relabel をカスタマイズすることで、追加ポリシー制約を実装できます。このファイルのコメントを参照してください。
これらの条件のいずれかが当てはまる場合、setflabel() は失敗します。ファイルは変更されません。
path のパス接頭辞の構成要素に対する検索権限が拒否されています。
呼び出し元のプロセスは、パスの最終構成要素への必須書き込みアクセス権を保持しません。パスの最終構成要素の機密ラベルは、呼び出し元プロセスの機密ラベルより優位ではなく、呼び出し元プロセスは有効な権限セット内に PRIV_FILE_MAC_WRITE を保持しないためです。
path の最終構成要素へのオープンファイル記述子の参照が存在します。
ラベルデーモンへの接続を確立できませんでした。
同名のファイルが移動先のディレクトリに存在します。
ラベルデーモンが不正なパラメータを受け取りました。
既存のファイルは、ディレクトリです。
path を変換するときに検出されたシンボリックリンクの数が多すぎます。
既存のファイルは、別のファイルにハードリンクされています。
パス引数の長さが PATH_MAX を超えています。
path で参照されているファイルが存在しません。
ファイルシステムは読み取り専用であるか、そのラベルが ADMIN_LOW または ADMIN_HIGH です。
次の属性については、 attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcslr |
MT レベル |
MT-安全 |
インタフェースの安定性 |
安定 |