getcmdattr 子例程
用途
查询特权命令数据库中的命令安全性信息。
库
安全性库 (libc.a)
语法
描述
getcmdattr 子例程从命令数据库读取指定的属性。 如果数据库未打开,那么此子例程将执行隐式打开以进行读取。 对于 SEC_CHAR 和 SEC_LIST 类型的属性, getcmdattr 子例程将值返回到分配的内存。 调用者需要释放此内存。
参数
| 项 | 描述 |
|---|---|
| 命令 | 指定命令名。 该值应该是系统上命令的完整路径。 |
| 属性 | 指定要读取的属性。 在 usersec.h 文件中定义了以下可能的属性:
|
| VALUE | 根据 属性 和 类型 参数中指定的值指定指针或指向指针的指针。 请参阅 Type 参数以获取更多详细信息。 |
| TYPE | 指定属性的类型。 在 usersec.h 文件中定义了以下有效类型:
|
安全性
访问的文件:
| 文件 | 方式 |
|---|---|
| /etc/security/privcmds | rw |
返回值
如果成功, getcmdattr 子例程将返回零。 否则,返回值为-1,并设置errno全局值来指示错误。
错误代码
如果 getcmdattr 子例程失败,那么将设置下列其中一个 errno 值:
| 项 | 描述 |
|---|---|
| EINVAL | Command 参数为 NULL 或 default。 |
| EINVAL | Attribute 数组或 Type 参数为 NULL 或不包含其中一个已定义的值。 |
| ENOATTR | Attribute 数组为 S_PRIVCMDS,但 Command 参数不是 ALL。 |
| ENOENT | 在 Command 参数中指定的命令不存在。 |
| ENOATTR | Attribute 数组中指定的属性有效,但没有为命令定义任何值。 |
| EPERM | 不允许该操作。 |
| EIO | 未能访问远程命令数据库。 |