putdevattr 子例程
用途
修改特权设备数据库中的设备安全性信息。
库
安全库libc.a
语法
描述
putdevattr子程序将指定属性写入设备数据库。 如果数据库未打开,那么此子例程将执行隐式打开以进行读取和写入。 通过putdevattr和putdevattrs子程序更改的数据必须通过调用putdevattr子程序显式提交,并在类型参数中指定SEC_COMMIT。 在所有数据提交之前,只有进程内的子程序会返回写入的数据。
必须首先通过调用SEC_NEW类型的putdevattr子程序来创建设备数据库中的新条目。
在整个数据库通过setkst设备发送到内核安全表或系统重启之前,对特权设备数据库所做的更改不会影响安全考虑。
参数
| 项 | 描述 |
|---|---|
| 设备 | 设备名。 该值应该是系统上设备的完整路径。 除非类型参数为SEC_COMMIT,否则必须指定此参数。 |
| 属性 | 指定写入属性。 usersec.h文件 中定义了以下可能的属性:
|
| VALUE | 根据属性和类型参数,指定一个缓冲区、一个指向缓冲区的指针或一个指向指针的指针。 详情请查看类型参数。 |
| TYPE | 指定期望的属性类型。 有效类型在usersec.h文件和 include 中定义:
|
安全性
访问的文件:
| 文件 | 方式 |
|---|---|
| /etc/security/privdevs | rw |
返回值
如果成功,putdevattr子例程返回 0。 否则,返回值为-1,并设置errno全局值来指示错误。
错误代码
如果putdevattr子例程失败,可以设置下列errno值之一:
| 项 | 描述 |
|---|---|
| EINVAL | 设备参数为空,类型参数不是SEC_COMMIT。 |
| EINVAL | 设备参数为默认或ALL。 |
| EINVAL | 属性参数不包含已定义的属性或为NULL。 |
| EINVAL | 类型参数不包含定义值。 |
| EINVAL | 对于此类属性,Value参数不指向有效缓冲区或有效数据。 |
| ENOENT | 设备参数指定的设备不存在。 |
| EPERM | 不允许该操作。 |