acl_set 或 acl_fset 子例程

用途

设置文件的 AIXC ACL 类型访问控制信息。

安全性库 (libc.a)

语法

#include <sys/access.h>
int acl_set (PathOwnerModeGroupModeDefaultMode)
char * Path;
int  OwnerMode;
int  GroupMode;
int  DefaultMode;
int acl_fset (FileDescriptor, OwnerModeGroupModeDefaultMode)
int * FileDescriptor;
int OwnerMode;
int GroupMode;
int DefaultMode;

描述

acl_setacl_fset 子例程设置文件的访问控制表 (ACL) 的基本条目。 将废弃所有其他条目。 其他访问控制属性保持不变。 请注意,如果文件系统对象与任何其他 ACL 类型访问控制信息相关联,那么它将仅替换为基本方式位信息。 强烈建议应用程序停止使用这些接口,而改为使用 aclx_putaclx_fput 子例程来设置 ACL。

参数

描述
DefaultMode 指定缺省类的访问许可权。
FileDescriptor 指定打开文件的文件描述符。
GroupMode 指定文件组的访问许可权。
OwnerMode 指定文件所有者的访问许可权。
路径 指定指向文件路径名的指针。

方式参数在包含零个或多个以下值的位掩码中指定访问许可权:

描述
R_ACC 授权读许可权。
W_ACC 授权写许可权。
X_ACC 授权执行或搜索许可权。

返回值

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

错误代码

acl_set 子例程失败,如果下列其中一项或多项为 true ,那么文件的访问控制信息保持不变:

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

acl_fset 子例程失败,如果满足以下条件,那么文件许可权保持不变:

描述
EBADF 文件描述符 FileDescriptor 无效。

acl_setacl_fset 子例程失败,如果满足以下一个或多个条件,那么文件的访问控制信息保持不变:

描述
EIO 操作期间发生 I/O 错误。
EPERM 有效用户标识与文件所有者的标识不匹配,调用者没有 root 用户权限。
EROFS 指定的文件位于只读文件系统上。

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

描述
ETIMEDOUT 连接超时。

安全性

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

审计事件:

事件 信息
chacl 路径
fchacl FileDescriptor