rs_setnameattr 子例程

用途

将资源集定义的访问控制信息设置在系统资源集注册表中。

标准 C 库 (libc.a)

语法

#include <sys/rset.h>
int rs_setnameattr (namespace, rsname, command, attr)
char *namespace, *rsname;
unsigned int command;
rs_attributes_t * attr;

描述

rs_setnameattr 子例程集 (取决于 命令 值) 是由 名称空间Rsname 参数指定的系统注册表资源集定义的所有者,组或访问控制信息中的一个或多个。

必须在 阿特尔 参数所指向的结构中提供 Rsname 参数的所有者标识和/或组标识和/或访问控制信息。

注意:
  1. 为了能够设置名称的属性,调用进程必须具有 root 用户权限或连接特权,并且有效的用户标识必须等于 Rsname 参数的所有者的用户标识。
  2. 要更改资源集定义所有者标识,或者要在调用者的组列表之外设置其组标识,需要 root 用户权限。

参数

描述
名称空间 指向以 null 结束的字符串,该字符串对应于应该在其中找到 Rsname 的名称空间。
Rsname 指向一个以 null 结束的字符串,该字符串对应于应该检索其信息的名称。
命令 指定应该更改哪些属性。 此参数通过对 rset.h中定义的以下一个或多个值进行逻辑 OR 运算来构造:
  • RS_OWNER: 设置 阿特尔所有者 字段中指定的所有者。
  • RS_GROUP: 设置 阿特尔 字段中指定的组。
  • RS_PERM: 设置 阿特尔模式 字段中指定的访问控制信息。
attr 指向包含 所有者,组 模式 字段的 rs_attributes_t 结构,该结构可能将由子例程用于设置属性。 mode 字段用于存储访问许可权,并通过对 rset.h中定义的以下一个或多个值进行逻辑 OR 运算来构造:
  • RS_IRUSR: 将读权限授予该名称的所有者
  • RS_IWUSR: 授予对名称所有者的写权限
  • RS_IRGRP: 将读权限授予与名称所有者相同的组中的用户
  • RS_IWGRP: 将写权限授予与名称所有者相同的组中的用户
  • RS_IROTH: 向其他用户提供读权限
  • RS_IWOTH: 向其他用户提供写权限

返回值

如果成功,那么将返回值 0。 如果不成功,则返回值为-1,并设置errno全局变量来指示错误。

错误代码

如果以下一个或多个条件成立,那么 rs_setnameattr 子例程不成功:

描述
EINVAL 发生了下列其中一个错误:
  • Rsname 是空指针。
  • 名称空间 是空指针。
  • Rsname名称空间 指向无效的名称。 名称长度为 0 或大于 RSET_NAME_SIZE 常量 (在 rset.h中定义) ,或者名称包含无效字符。
  • 命令 标识了无效的命令值。
  • 命令 包含 RS_PERM ,并且 阿特尔模式 字段标识无效的访问权值。
  • 阿特尔 是空指针。
EPERM 发生了下列其中一个错误:
  • 调用进程既没有 CAP_NUMA_ATTACH 连接特权,也没有 root 用户权限。
  • 命令 包含 RS_OWNER ,并且 阿特尔所有者 字段与调用者的用户标识不同,并且调用者没有 root 用户权限。
  • 命令 包含 RS_GROUP , 阿特尔 字段在调用者的组列表之外,并且调用者不具有 root 用户权限。
  • namespace 参数以 sys开头。 此名称空间保留供系统使用。
ENOENT 在由 名称空间标识的名称空间中找不到 Rsname
ENOSPC 文件空间块数不足。
EFAULT 地址无效; 异常超出 错误号 范围。
ENOSYS rs_setnameattr 子例程不受系统支持。