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;

描述

aclx_gettypes 子例程帮助获取特定文件系统上支持的 ACL 类型的列表。 文件系统可以实现策略以同时支持一到多种 ACL 类型。 列表中的第一个 ACL 类型是文件系统的缺省 ACL 类型。 如果文件系统上不支持目标 ACL 类型,那么将在 ACL 转换中使用此缺省 ACL 类型。 文件系统中的每个文件系统对象仅与特定 ACL 类型的一块 ACL 数据相关联。

参数

描述
路径 指定正在为其请求受支持 ACL 列表的文件系统中的文件系统对象的路径名。
acl_type_list 指定指向缓冲区空间的指针,在该缓冲区空间中返回 ACL 类型的列表。 此缓冲区的大小是使用 acl_type_list_len 自变量 (以字节为单位) 指示的。

受支持的 ACL 类型为 ACLXNFS4

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 前缀的所有组件具有搜索许可权。

审计事件:无