chaudit() - パスによるファイル用監査フラグの変更

標準

標準/拡張機能 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);
  }
}

関連情報