下表列出了使用特权的接口。表后面提供了一些主要特权接口的说明。
|
用于设置特权的主要函数为 setppriv(),该函数具有以下语法:
int setppriv(priv_op_t op, priv_ptype_t which, \ const priv_set_t *set);
op 表示要执行的特权操作。op 参数具有以下三个可能值之一:
PRIV_ON-将 set 变量指定的特权添加到 which 指定的特权集合类型中
PRIV_OFF-从 which 指定的特权集合类型中删除 set 变量指定的特权
PRIV_SET-使用 set 变量指定的特权替换 which 指定的特权集合类型中的特权
which 用于指定要更改的特权集合类型:
PRIV_PERMITTED
PRIV_EFFECTIVE
PRIV_INHERITABLE
PRIV_LIMIT
set 指定要在更改操作中使用的特权。
此外,还提供了便利函数:priv_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 中包括以下关键字:
“all” 表示所有已定义的特权。使用 “all,!priv_name,...” 可以指定除指示特权以外的所有特权。
"none" 表示无特权。
"basic" 表示执行登录标准 UNIX 操作系统的所有用户一般都可以执行的操作所需的特权集合。