getdevattr 子例程

用途

检索特权设备数据库中的设备安全性信息。

安全性库 (libc.a)

语法

#include <usersec.h>

int getdevattr (Device, Attribute, Value, Type)
    char *Device;
    char *Attribute;
    void *Value;
    int Type;

描述

getdevattr 子例程从设备数据库中读取指定的属性。 如果数据库未打开,那么此子例程将执行隐式打开以进行读取。 对于 SEC_CHARSEC_LIST 类型的属性, getdevattr 子例程将值返回到分配的内存。 调用者需要释放此内存。

参数

描述
设备 指定设备名。 该值应该是系统上设备的完整路径。 除非 Type 参数为 SEC_COMMIT,否则必须指定此参数。
属性 指定读取的属性。 在 usersec.h 文件中定义了以下可能的属性:
自述文件
从设备读取所需的特权。 可以定义 8 个特权。 允许具有任何读特权的进程从设备读取。 属性类型为 SEC_LIST
写 EPRIVS
写入设备所需的特权。 可以定义 8 个特权。 允许具有任何写特权的进程写入设备。
VALUE 根据 Attribute 数组和 Type 参数指定指针或指向指针的指针。 请参阅 Type 参数以获取更多详细信息。
TYPE 指定属性的类型。 在 usersec.h 文件中定义了以下有效类型:
SEC_INT
属性的格式为整数。 对于 getdevattr 子例程,用户应该提供指向已定义整数变量的指针。
SEC_CHAR
属性的格式是以 null 结束的字符串。 对于 getdevattr 子例程,用户应提供指向定义的字符指针变量的指针。 该值作为 getdevattr 子例程的已分配内存返回。 调用者需要释放此内存。
SEC_LIST
属性的格式是一系列并置字符串,每个字符串都以 null 结束。 序列中的最后一个字符串由两个连续的空字符终止。 对于 getdevattr 子例程,用户应提供指向定义的字符指针变量的指针。 调用者需要释放此内存。

安全性

访问的文件:
文件 方式
/etc/security/privdevs rw

返回值

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

错误代码

如果 getdevattr 子例程失败,那么将设置下列其中一个 errno 值:

描述
EINVAL Device 参数为 NULLdefault
EINVAL AttributeType 参数为 NULL 或不包含其中一个已定义的值。
EINVAL Attribute 参数为 S_PRIVDEVS,但 Device 参数不是 ALL
ENOENT Device 参数中指定的设备不存在。
ENOATTR Attribute 参数中指定的属性有效,但没有为设备定义任何值。
EPERM 不允许该操作。