aclx_convert 子例程

用途

将访问控制信息从一种 ACL 类型转换为另一种 ACL 类型。

安全性库 (libc.a)

语法

#include <sys/acl.h>
int aclx_convert (from_acl, from_sz, from_type, to_acl, to_sz, to_type, fs_obj_path)
void * from_acl;
size_t   from_sz;
acl_type_t   from_type;
void * to_acl;
size_t  * to_sz;
acl_type_t   to_type;
char  * fs_obj_path;

描述

aclx_convert 子例程将访问控制信息从 ACL 类型 from_typefrom_acl 中给出的二进制输入转换为类型为 to_type 的二进制 ACL ,并将其存储在 to_acl中。 值 from_typeto_type 可以是系统中支持的任何 ACL 类型。

ACL 转换是在特定于 ACL 类型的算法的帮助下进行的。 因为转换是近似的,会导致访问控制的潜在损失。 因此,此调用的用户必须确保转换后的 ACL 满足所需的访问控制。 用户可以在转换后手动查看文件系统对象的访问控制信息,以确保转换成功并满足预期访问控制的要求。

参数

描述
from_acl 指向必须转换的 ACL。
指示 from_acl指向的 ACL 信息的大小。
from_type 指示 ACL 的 ACL 类型信息。 acl_type 的大小为 64 位,在系统上是唯一的。 如果系统中不支持给定的 acl_type ,那么此函数将失败,并且 errno 将设置为 EINVAL

受支持的 ACL 类型为 ACLXNFS4

指向必须在其中存储目标二进制 ACL 的缓冲区。 此缓冲区中可用的内存量由 to_sz 参数指示。
to_sz 指示 to_acl中可用的内存量 (以字节计)。 如果 to_sz 包含的内存量小于存储转换后的 ACL 所需的内存量,那么 * to_sz 将设置为所需的内存量,并且 ENOSPCerrno返回。
to_type 指示需要对其进行转换的 ACL 类型。 ACL 类型的大小为 64 位,在系统上是唯一的。 如果系统中不支持给定的 acl_type ,那么此函数将失败,并且 errno 将设置为 EINVAL

受支持的 ACL 类型为 ACLXNFS4

fs_obj_path 要为其请求 ACL 转换的文件系统对象路径。 获取有关对象的信息,例如该对象是文件还是目录。

返回值

成功完成时, aclx_convert 子例程返回值 0。 否则,将返回-1并设置errno全局变量来指示错误。

错误代码

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

描述
EINVAL 输入参数无效。 如果在 from_typeto_type中指定了无效的 acl_type 作为此例程的输入,那么会返回相同的错误。 如果 from_acl 中提供的二进制 ACL 不是 from_type指定的类型,那么也可能返回此 errno
ENOSPC to_acl中没有足够的存储空间可用。

安全性

访问控制: 调用者必须具有 Path 前缀的所有组件的搜索许可权。

审计事件: 如果审计子系统已正确配置并且已启用,那么 aclx_convert 子例程将在每次执行命令时生成以下审计记录 (事件):

描述
事件 信息
FILE_Acl 列出访问控制。