aclx_gettypes 子例程
用途
检索与所提供路径相关联的文件系统所支持的 ACL 类型的列表。
库
安全性库 (libc.a)
语法
#include <sys/acl.h> int aclx_gettypes (Path, acl_type_list, acl_type_list_len)
char * Path;
acl_types_list_t * acl_type_list;
size_t * acl_type_list_len;
char * Path;
acl_types_list_t * acl_type_list;
size_t * acl_type_list_len;
描述
aclx_gettypes 子例程帮助获取特定文件系统上支持的 ACL 类型的列表。 文件系统可以实现策略以同时支持一到多种 ACL 类型。 列表中的第一个 ACL 类型是文件系统的缺省 ACL 类型。 如果文件系统上不支持目标 ACL 类型,那么将在 ACL 转换中使用此缺省 ACL 类型。 文件系统中的每个文件系统对象仅与特定 ACL 类型的一块 ACL 数据相关联。
参数
| 项 | 描述 |
|---|---|
| 路径 | 指定正在为其请求受支持 ACL 列表的文件系统中的文件系统对象的路径名。 |
| acl_type_list | 指定指向缓冲区空间的指针,在该缓冲区空间中返回 ACL 类型的列表。 此缓冲区的大小是使用 acl_type_list_len 自变量 (以字节为单位) 指示的。 受支持的 ACL 类型为 ACLX 和 NFS4。 |
| acl_type_list_len | 指向缓冲区的指针,该缓冲区指定文件系统在其中返回 ACL 列表的缓冲区 acl_type_list 的长度。 这是输入/输出参数。 如果缓冲区的长度不足以存储所有 ACL 类型,那么文件系统将返回错误并指示在此相同区域中所需的缓冲区长度。 长度以字节为单位指定。 如果子例程调用成功,那么此字段包含存储在 acl_type_list 缓冲区中的信息的字节数。 调用者可以使用此信息来获取返回的 ACL 类型条目数。 |
返回值
成功完成时, aclx_gettypes 子例程返回值 0。 否则,将返回-1并设置errno全局变量来指示错误。
错误代码
aclx_gettypes 子例程失败,如果下列其中一项或多项为 true ,那么文件的访问控制信息保持不变:
| 项 | 描述 |
|---|---|
| EACCES | 拒绝对 Path 前缀的组件的搜索许可权。 |
| Efault | Path 参数指向进程的已分配地址空间外部的位置。 |
| ELOOP | 转换 Path 参数时迂到太多符号链接。 |
| ENAMETOOLONG | Path 参数的组件超过 255 个字符,或者整个 Path 参数超过 1023 个字符。 |
| ENOENT | Path 的组件不存在或具有 disallow truncation 属性 (请参阅 ulimit 子例程)。 |
| ENOENT | Path 参数为空。 |
| ENOENT | 指定了符号链接,但它所引用的文件不存在。 |
| ENOSPC | 提供的 acl_type_list 缓冲区不足以存储此文件系统支持的所有 ACL 类型。 |
| ENOTDIR | Path 前缀的组件不是目录。 |
| ESTALE | 进程的根目录或当前目录位于已卸载的虚拟文件系统中。 |
如果在系统上安装了网络文件系统 (NFS) ,那么如果满足以下条件,那么 acl_gettypes 子例程也可能失败:
| 项 | 描述 |
|---|---|
| ETIMEDOUT | 连接超时。 |
安全性
访问控制: 调用者必须对 Path 前缀的所有组件具有搜索许可权。
审计事件:无