Solaris 开发者安全性指南

权限接口

下表列出了使用权限的接口。表后面提供了一些主要权限接口的说明。

表 2–1 使用权限的接口

目的 

函数 

其他注释 

获取和设置权限集 

setppriv(2)getppriv(2)priv_set(3C)priv_ineffect(3C)

setppriv()getppriv() 是系统调用。priv_ineffect()priv_set() 是为方便而使用的包装函数。

识别和转换权限 

priv_str_to_set(3C)priv_set_to_str(3C)priv_getbyname(3C)priv_getbynum(3C)priv_getsetbyname(3C)priv_getsetbynum(3C)

这些函数将指定的权限或权限集映射到名称或编号。  

处理权限集 

priv_allocset(3C)priv_freeset(3C)priv_emptyset(3C)priv_fillset(3C)priv_isemptyset(3C)priv_isfullset(3C)priv_isequalset(3C)priv_issubset(3C)priv_intersect(3C)priv_union(3C)priv_inverse(3C)priv_addset(3C)priv_copyset(3C)priv_delset(3C)priv_ismember(3C)

这些函数与权限内存分配、测试和各种设置操作有关。 

获取和设置进程标志 

getpflags(2)setpflags(2)

PRIV_AWARE 进程标志指示进程是否了解权限或是否在超级用户模型下运行。PRIV_DEBUG 用于权限调试。 

低级凭证处理 

ucred_get(3C)

这些例程用于调试、底层系统调用和内核调用。 

setppriv():用于设置权限

用于设置权限的主要函数为 setppriv(),该函数具有以下语法:

int setppriv(priv_op_t op, priv_ptype_t which, \

const priv_set_t *set);

op 表示要执行的权限操作。op 参数具有以下三个可能值之一:

which 用于指定要更改的权限集类型:

set 指定要在更改操作中使用的权限。

此外,还提供了便利函数:priv_set()

用于映射权限的 priv_str_to_set()

这些函数便于使用其数值映射权限名称。priv_str_to_set() 是此系列中的典型函数。priv_str_to_set() 具有以下语法:

priv_set_t *priv_str_to_set(const char *buf, const char *set, \

const char **endptr);

priv_str_to_set() 采用 buf 中指定的权限名字符串。priv_str_to_set() 返回可以与四个权限集之一组合的一组权限值。**endptr 可用于调试解析错误。请注意,可以在 buf 中包括以下关键字: