標準
標準/拡張機能 |
C/C++ |
依存項目 |
z/OS®UNIX |
両方 |
|
形式
#define _OPEN_SYS 1
#include <sys/stat.h>
int chaudit(const char *pathname, unsigned int flags,
unsigned int option);
機能説明
セキュリティー・プロダクトが監査する必要のある
要求タイプを示すように、ファイルの監査フラグを変更します。chaudit() は、指定した option に応じて、ユーザー監査
フラグ、またはセキュリティー監査担当者監査フラグを変更できます。
pathname は、その監査フラグが変更されるファイルの名前です。
flags は監査フラグの設定値です。
- AUDTREADFAIL
- 失敗した読み取り要求の監査
- AUDTREADSUCC
- 正常終了した読み取り要求の監査
- AUDTWRITEFAIL
- 失敗した書き込み要求の監査
- AUDTWRITESUCC
- 正常終了した書き込み要求の監査
- AUDTEXECFAIL
- 失敗した実行要求または検索要求の監査
- AUDTEXECSUCC
- 正常終了した実行要求または検索要求の監査。これらのすべてまたはいくつかのビット単位の
包含 OR は、複数のタイプの監査を設定するのに使用できる。
option は、ユーザー監査フラグまたは
セキュリティー監査担当者監査フラグを変更するかどうかを
示します。
- AUDT_USER (0)
- ユーザー・フラグを変更する。ユーザーは、ファイル所有者であるか、またはファイルのユーザー監査
フラグを変更するのに適切な権限を持っていなければならない。
- AUDT_AUDITOR (1)
- セキュリティー監査担当者監査フラグを変更する。ユーザーは、ファイルのセキュリティー監査担当者監査フラグ
を変更するためのセキュリティー監査担当者権限
を持っていなければならない。
戻り値
chaudit() は、正常終了の場合は 0 を戻します。
正常に実行されなかった場合、chaudit() は -1 を戻して、errno を次のいずれかの
値に設定します。
- エラー・コード
- 説明
- EACCES
- 呼び出しプロセスに pathname の
一部コンポーネントを検索する許可がありません。
- EINVAL
- option が AUDT_USER または AUDT_AUDITOR ではありません。
- ELOOP
- ループがシンボリック・リンクに存在しています。pathname の解決で検出されたシンボリック・リンク
の数が、POSIX_SYMLOOP (limits.h header ファイルで定義された値) よりも大きい場合、このエラーが発行されます。
- ENAMETOOLONG
- _POSIX_NO_TRUNC が有効なときに、pathname の長さが PATH_MAX
文字より長いか、または pathname のコンポーネントが NAME_MAX
文字より長くなっています。シンボリック・リンクの場合、シンボリック・リンクの代替となる pathname ストリングの長さが PATH_MAX を超えています。PATH_MAX および NAME_MAX の値は、pathconf() を使用して判別されます。
- ENOENT
- pathname という名前のファイルが存在しないか、または pathname が空ストリングです。
- ENOTDIR
- パス接頭部のコンポーネントがディレクトリーではありません。
- EPERM
- 呼び出しプロセスの有効ユーザー ID (UID) がファイルの所有者
に一致しません。また、呼び出しプロセスに適切な特権がありません。
- EROFS
- pathname が読み取り専用ファイル・システム上の
ファイルを指定しています。
例
CELEBC09
⁄* CELEBC09
This example changes the audit flags.
*⁄
#define _OPEN_SYS
#include <fcntl.h>
#include <sys⁄stat.h>
#include <sys⁄types.h>
#include <unistd.h>
#undef _OPEN_SYS
#include <stdio.h>
main() {
int fd;
char fn[]="chaudit.file";
if ((fd = creat(fn, S_IRUSR|S_IWUSR)) < 0)
perror("creat() error");
else {
close(fd);
if (chaudit(fn, AUDTREADFAIL, AUDT_USER) != 0)
perror("chaudit() error");
unlink(fn);
}
}