getobjattr 子例程

用途

查询域分配的对象数据库中定义的对象安全性信息。

安全性库 (libc.a)

语法

#include <usersec.h>
int getobjattr ( Obj, Attribute, Value, Type)
char * Obj;
char * Attribute;
void *Value;
int Type;

描述

getobjattr 子例程从域分配的对象数据库中读取指定的属性。 如果数据库未打开,那么此子例程将执行隐式打开以进行读取。 对于 SEC_CHAR 和 SEC_LIST 类型的属性, getobjattr 子例程将值返回到分配的内存。 调用者必须释放此分配的内存。

参数

描述
对象 指定对象名。
属性 指定要读取的属性。 在 usersec.h 文件中定义了以下可能的属性:
  • S_DOMAINS

    对象所属的域的列表。 属性类型为 SEC_LIST

  • S_CONFSETS

    从访问对象中排除的域的列表。 属性类型为 SEC_LIST

  • 类型
    对象的类型。 有效值是:
    • 网络

      对于网络接口

    • 文件

      对于基于文件的对象。 对象名应该是绝对路径

    • 设备

      对于设备。 应指定绝对路径。

    • 网络端口

      对于端口和端口范围

    属性类型为 SEC_CHAR。
  • S_SECFLAGS

    对象的安全标志。 有效值为 FSF_DOM_ALL 和 FSF_DOM_ANY。 属性类型为 SEC_INT。

VALUE

根据 属性类型 参数中指定的值指定指针或指向指针的指针。 请参阅 Type 参数以获取更多详细信息。

TYPE Type 参数指定属性的类型。 在 usersec.h 文件中定义了以下有效类型:

SEC_INT

属性的格式为整数。 对于子例程,必须提供指向已定义整数变量的指针。

SEC_LIST

属性的格式是一系列并置字符串,每个字符串都以 null 结束。 序列中的最后一个字符串由两个连续的空字符终止。 对于子例程,必须提供指向定义的字符指针变量的指针。 调用者必须释放此内存。

安全性

访问的文件:

描述
文件 方式
/etc/security/domobjs
rw

返回值

如果成功, getobjattr 子例程将返回零。 否则,返回值为-1,并设置errno全局值来指示错误。

错误代码

描述
EINVAL

Obj 参数为 NULL。

AttributeType 参数为 NULL 或不包含其中一个已定义的值。

Obj 参数为 ALL , Attribute 参数不是 S_DOMAINS。

Value 参数未指向此类型属性的有效缓冲区。

ENOATTR Attribute 参数是 S_DOMAINS ,但 Obj 参数不是 ALL。

Attribute 参数中指定的属性有效,但没有为对象定义任何值。

ENOENT

Obj 参数中指定的对象不存在。

ENOMEM 无法分配内存。
EPERM 不允许该操作。
EACCES 数据请求的访问许可权被拒绝。