ファイルシステムのセキュリティ属性は、システム管理者が一部のセキュリティ属性を割り当てなかった場合、あるいは作成プロセスで属性を取得していない場合、ローカルまたはマウントされたファイルシステムオブジェクトに対し、欠落しているセキュリティ属性を充てんします。ファイルシステムのセキュリティ属性は、vfstab(4) ファイルと vfstab_adjunct(4) ファイル、あるいはファイルまたはディレクトリの i ノードから取得できます。
vfstab_adjunct(4) ファイルには、遠隔マウントポイントとその関連セキュリティ情報が含まれます。システム管理者は、遠隔ワークステーションからローカルワークステーションにマウントされたファイルシステムが正しいセキュリティ属性を持つように、このファイルの設定と管理を行います。
次の例は、vfstab_adjunct(4) から行を取得して表示します。getvfsaent(3) ルーチンは、初めにファイルの先頭の行を読み取り、それに続く呼び出しごとに次の行を 1 つずつ読み取ります。getvfsaent(3) ルーチンは、入力ファイルに指定されたマウントポイントの行を読み取ります。
このコード例に示すように、stdio.h を必ずインクルードしてください。
#include <stdio.h>
#include <tsol/vfstab_adjunct.h>
main()
{
struct vfsaent *entry;
char *vfsfile = "/etc/security/tsol/vfstab_adjunct";
char *file = "/shark/doc";
int retval;
FILE *fp;
fp = fopen(vfsfile, "r");
if (fp == NULL) {
printf("Can't open %s¥n", vfsfile);
exit(1);
}
/* ファイルを 1 行ずつ読み取る */
retval = getvfsaent(fp, &entry);
if (retval == 0) {
printf("Mount Point is %s ¥n Security Info is %s¥n",
entry->vfsa_fsname, entry->vfsa_attr);
free(entry);
}
else
printf("No entries!¥n");
fseek(fp, 0, 0);
/* 指定のマウントポイントの行を読み取る */
retval = getvfsafile(fp, &entry, file);
if (retval == 0) {
printf("Mount Point is %s ¥nSecurity Info is %s¥n",
entry->vfsa_fsname, entry->vfsa_attr);
free(entry);
}
else
printf("Mount point not found.¥n");
fclose(fp);
}
printf 文によって、次のように出力されます。この vfstab_adjunct ファイルには、/opt/SUNWspro マウントポイントに対するエントリが 1 つだけあります。
Mount Point is /opt/SUNWspro
Security Info is slabel=[C]:allowed all
Mount Point not found
次のコードは、file (ファイル) の CMW ラベル (FSA_LABEL) を取得し、それを buffer (バッファー) に返します。
#include <tsol/fsattr.h>
#include <tsol/label.h>
main()
{
char *file = "/export";
char buffer [3*1024], *string = (char *)0;
int length, retval;
length = sizeof(buffer);
retval = getfsattr(file, FSA_LABEL, buffer, length);
retval = bcltos((bclabel_t *)buffer, &string, 0, VIEW_INTERNAL);
printf("/export CMW label = %s ¥n", buffer);
}
printf 文によって、次のように出力されます。
/export CMW label = ADMIN_LOW [ADMIN_LOW]
FSA_ACLCNT - ファイルシステムアクセスのアクセス制御リスト (ACL) 数
FSA_DFACLCNT - ファイルシステムのデフォルト ACL 数
FSA_DFACL - ファイルシステムのデフォルト ACL
FSA_AFLAGS - ファイルシステムの属性フラグ。「ファイルシステムのセキュリティ属性フラグの取得と設定」を参照してください。
FSA_MLDPFX - ファイルシステムのマルチレベルディレクトリの接頭辞文字列
FSA_APSACNT - プロセス監査の事前選択マスク内のクラスの数
FSA_APSA - プロセス監査の事前選択マスク内のクラス。プロセスは、この情報を取得する場合、有効特権セット内で file_audit 特権を必要とする。詳細は、「特権と承認」を参照してください。
CMW ラベル、ファイルシステムのラベル範囲、ファイル特権、およびマルチレベルディレクトリにアクセスするプログラミングインタフェースの概要は、「Trusted Solaris 7 のセキュリティ機構」で述べています。詳細は、該当するそれぞれの章を参照してください。
アクセス制御リスト - アクセス制御リストは Solaris 7 の一部であるため、本書では説明していません。
監査の事前選択属性 - ファイルシステムに対する監査の事前選択属性は、システム管理者がコマンド行から setfsattr(1M) を使用して指定します。この事前選択属性は、ファイルのアクセス権ビットに対して監査を指定します。アクセス (読み取り、書き込み、実行) が試みられた場合に、そのファイルとディレクトリを監査できるようにファイルシステムを構成することができます。
プロセスに対する監査の事前選択属性は、システム管理者がコマンド行から auditconfig(1M) を使用して指定します。ファイルシステムの事前選択属性は、プロセスの事前選択属性を無効にします。たとえば、ファイルの読み取りについて監査されるプロセスは、読み取り監査を行わないことを指定するファイルシステム事前選択監査属性を持つファイルの読み取り時には監査されません。詳細は、『Trusted Solaris の監査管理』を参照してください。