ファイルの機密ラベルを変更すると、ファイルの新しいラベルに一致する新しいゾーンにファイルが移動します。
このコーディング例では、プロセスは CONFIDENTIAL ラベルで実行されています。プロセスを実行しているユーザーの認可上限は TOP SECRET です。TOP SECRET ラベルは CONFIDENTIAL ラベルより優位です。このプロセスは機密ラベルを TOP SECRET にアップグレードします。アップグレードを正常に実行するためには、ユーザーに「Upgrade File Label RBAC」承認が必要です。
次のプログラムは upgrade-afile によって呼び出されます。
#include <tsol/label.h>
main()
{
int retval, error;
m_label_t *fsenslabel;
char *string = “TOP SECRET”;
*string1 = “TOP SECRET”;
/* 新しい機密ラベル値を作成する */
if ((retval = str_to_label(string, &fsenslabel, MAC_LABEL, L_DEFAULT, &err)) != 0) {
perror("str_to_label(MAC_LABEL, L_DEFAULT) failed");
exit(1);
}
/* ファイルラベルを新しい値に設定する */
if ((retval = setflabel(“/export/home/zelda/afile”, &fsenslabel)) != 0) {
perror("setflabel(“/export/home/zelda/afile”) failed");
exit(1);
}
m_label_free(fsenslabel);
}
このプログラムの実行結果は、プロセスに渡されたファイルのラベルを基準にしたプロセスのラベルに依存します。
このプログラムを実行する前後に getlabel コマンドを使用してファイルのラベルを確認します。次に示すように、プログラム実行前の afile のラベルは CONFIDENTIAL です。プログラム実行後の afile のラベルは TOP SECRET です。
% pwd /export/home/zelda % getlabel afile afile: CONFIDENTIAL % update-afile % getlabel afile afile: TOP SECRET |
ファイルを再格付けしたあとに CONFIDENTIAL とラベル付けされたウィンドウから getlabel コマンドを実行すると、ファイルが表示されなくなります。TOP SECRET とラベル付けされたウィンドウから getlabel コマンドを実行すると、再格付けされたファイルが表示されます。