acl_get 或 acl_fget 子例程
用途
如果关联的 ACL 是 AIXC 类型,那么获取文件的访问控制信息。
库
安全性库 (libc.a)
语法
#include <sys/access.h> char *acl_get (Path)
char * Path;
char * Path;
char *acl_fget (FileDescriptor)
int FileDescriptor;
int FileDescriptor;
描述
acl_get 和 acl_fget 子例程检索文件系统对象的访问控制信息。 此信息在返回值指向的缓冲区中返回。 未指定此缓冲区中数据的结构。 这些子例程返回的值应仅用作 acl_put 或 acl_fput 子例程的自变量,以复制或复原访问控制信息。 请注意,如果与文件系统对象关联的 ACL 的类型与 AIXC 不同,那么 acl_get 和 acl_fget 子例程可能会失败。 建议应用程序使用 aclx_get 和 aclx_fget 子例程来检索 ACL。
acl_get 和 acl_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_get 或 acl_fget 子例程将失败:
| 项 | 描述 |
|---|---|
| EIO | 操作期间发生 I/O 错误。 |
如果在系统上安装了网络文件系统 (NFS) ,那么如果满足以下条件,那么 acl_get 和 acl_fget 子例程也可能失败:
| 项 | 描述 |
|---|---|
| ETIMEDOUT | 连接超时。 |
安全性
| 项 | 描述 |
|---|---|
| 访问控制 | 调用者必须具有 Path 前缀的所有组件的搜索许可权。 |
| 审计事件 | 无。 |