statacl または fstatacl サブルーチン

目的

ファイルの AIXC ACL タイプのアクセス制御情報を取得します。

ライブラリー

標準 C ライブラリー (libc.a)

構文

#include <sys/acl.h>
#include <sys/stat.h>
int statacl (PathCommandACLACLSize)
char * Path;
int  Command;
struct acl * ACL;
int  ACLSize;
int fstatacl (FileDescriptorCommandACLACLSize)
int  FileDescriptor;
int Command;
struct acl *ACL;
int ACLSize;

説明

statacl および fstatacl サブルーチンは、関連する ACL が AIXC タイプの場合に、ファイル・システム・オブジェクトのアクセス制御情報を返します。 関連付けられている ACL のタイプが異なる場合、または基礎となる物理ファイル・システムが AIXC ACL タイプをサポートしていない場合は、これらのインターフェースによってエラーが返される可能性があります。 statacl サブルーチンを NFS V4 ファイルで使用すると、無効な結果が返されます。

パラメーター

項目 説明
パス ファイルのパス名へのポインターを指定します。
FileDescriptor これは、オープン・ファイルのファイル・ディスクリプターを指定します。
Command Pathのパス解釈のモードを指定します。具体的には、シンボリック・リンクまたはマウント・ポイントに関する情報を取得するかどうかを指定します。 Command パラメーターの有効な値は、 stat.h ファイルに定義されており、以下のものが含まれます。
  • STX_LINK (STX_LINK)
  • STX_MOUNT (STX_MOUNT)
  • STX_NORMAL (STX_NORMAL)
acl ファイルシステム・オブジェクトの AIXC タイプのアクセス制御リスト (ACL) を入れるバッファーを指すポインターを指定します。 AIXC ACL のフォーマットは、 sys/acl.h ファイルに定義され、以下のメンバーを含んでいます。
acl_len
アクセス制御リスト (ACL) のサイズ。
注: ファイルの ACL 全体が 1 メモリー・ページ (4096 バイト) を超えることはできません。
acl_mode
ファイル・モード。
注: 有効な値は、以下のとおりです。acl_modesys/mode.h ファイルに定義されます。
u_access
ファイル所有者のアクセス権。
g_access
ファイル・グループのアクセス許可。
o_access
デフォルト・クラス othersのアクセス権。
acl_ext[ ]
このアクセス制御リスト用の拡張項目の配列。

基本 ACL のメンバー (所有者、グループ、およびその他) には、 sys/access.h ファイルに定義されている以下のビットを入れることができます。

R_ACC
読み取り許可を許可します。
W_ACC (W_ACC)
書き込み権限を許可します。
X_ACC (X_ACC)
実行権限または検索権限を許可します。
ACLSize (ACLSize) ACL を入れるバッファーのサイズを指定します。 この値が小さすぎる場合、ACL の最初のワードは、必要なバッファーのサイズに設定されます。

戻り値

正常終了すると、 statacl および fstatacl サブルーチンは値 0 を戻します。 そうでない場合は-1が返され、エラーを示すerrnoグローバル変数が設定される。

エラー・コード

以下の 1 つ以上が該当する場合、 statacl サブルーチンは失敗します。

項目 説明
ENOTDIR Path 接頭部のコンポーネントがディレクトリーではありません。
ENOENT Path のコンポーネントが存在しないか、 disallow truncation 属性を持っています ( ulimit サブルーチンを参照)。
ENOENT Path パラメーターがヌルでした。
EACCES Path 接頭部のコンポーネントに対する検索許可が拒否されました。
EFAULT Path パラメーターが、プロセスの割り振られたアドレス・スペースの外部の場所を指しています。
ESTALE プロセスのルート・ディレクトリーまたは現行ディレクトリーは、アンマウントされた仮想ファイル・システム内にあります。
ELOOP Path パラメーターの変換中に検出されたシンボリック・リンクが多すぎます。
ENOENT シンボリック・リンクが指定されましたが、それが参照するファイルが存在しません。
ENAMETOOLONG Path パラメーターのコンポーネントが 255 文字を超えているか、または Path パラメーター全体が 1023 文字を超えています。

以下が真の場合、 fstatacl サブルーチンは失敗します。

項目 説明
EBADF ファイル・ディスクリプター FileDescriptor が無効です。

以下の 1 つ以上が該当する場合、 statacl または fstatacl サブルーチンは失敗します。

項目 説明
EFAULT ACL パラメーターが、プロセスの割り振り済みアドレス・スペースの外部の場所を指しています。
EINVAL Command パラメーターは、 STX_LINKSTX_MOUNTSTX_NORMALの値ではありません。
ENOSPC ACLSize パラメーターは、 ACL のバッファーが小さすぎてアクセス制御リストを保持できないことを示します。 この場合、バッファーの最初のワードは、必要なバッファーのサイズに設定されます。
EIO 操作中に入出力エラーが発生しました。

ご使用のシステムにネットワーク・ファイル・システム (NFS) がインストールされている場合、以下の条件が満たされていると、 statacl および fstatacl サブルーチンも失敗する可能性があります。

項目 説明
ETIMEDOUT 接続がタイムアウトになりました。