acl_get 或 acl_fget 子例程

用途

如果关联的 ACL 是 AIXC 类型,那么获取文件的访问控制信息。

安全性库 (libc.a)

语法

#include <sys/access.h>
char *acl_get (Path)
char * Path;
char *acl_fget (FileDescriptor)
int  FileDescriptor;

描述

acl_getacl_fget 子例程检索文件系统对象的访问控制信息。 此信息在返回值指向的缓冲区中返回。 未指定此缓冲区中数据的结构。 这些子例程返回的值应仅用作 acl_putacl_fput 子例程的自变量,以复制或复原访问控制信息。 请注意,如果与文件系统对象关联的 ACL 的类型与 AIXC 不同,那么 acl_getacl_fget 子例程可能会失败。 建议应用程序使用 aclx_getaclx_fget 子例程来检索 ACL。

acl_getacl_fget 子例程返回的缓冲区位于已分配的内存中。 在使用后,调用者应该使用 free 子例程来释放缓冲区。

参数

描述
路径 指定文件的路径名。
FileDescriptor 指定打开文件的文件描述符。

返回值

成功完成时, acl_get acl_fget 子例程返回一个指向包含访问控制信息的缓冲区的指针。 否则,将返回空指针,并设置 errno 全局变量以指示错误。

错误代码

如果下列其中一个或多个为 true ,那么 acl_get 子例程将失败:

描述
EACCES 拒绝对 Path 前缀的组件的搜索许可权。
Efault Path 参数指向进程的已分配地址空间外部的位置。
ELOOP 转换 Path 参数时迂到太多符号链接。
ENAMETOOLONG Path 参数的组件超过 255 个字符,或者整个 Path 参数超过 1023 个字符。
ENOTDIR Path 前缀的组件不是目录。
ENOENT Path 的组件不存在,或者进程具有 disallow truncation 属性 (请参阅 ulimit 子例程)。
ENOENT Path 参数为空。
ENOENT 指定了符号链接,但它所引用的文件不存在。
ESTALE 进程的根目录或当前目录位于已卸载的虚拟文件系统中。

如果以下情况成立,那么 acl_fget 子例程将失败:

描述
EBADF FileDescriptor 参数不是有效的文件描述符。

如果以下情况成立,那么 acl_getacl_fget 子例程将失败:

描述
EIO 操作期间发生 I/O 错误。

如果在系统上安装了网络文件系统 (NFS) ,那么如果满足以下条件,那么 acl_getacl_fget 子例程也可能失败:

描述
ETIMEDOUT 连接超时。

安全性

描述
访问控制 调用者必须具有 Path 前缀的所有组件的搜索许可权。
审计事件 无。