putobjattr 子例程
用途
修改域分配对象数据库中定义的对象。
库
安全库libc.a)
语法
#include <usersec.h>
int putobjattr ( Obj, Attribute, Value, Type )
char * Obj;
char *Attribute;
void * Value;
int Type;描述
putobjattr子程序修改域分配对象数据库。 通过调用带有 SEC_NEW 类型的putobjattr子程序并指定新对象名称,可将新对象添加到域分配对象数据库中。 删除对象或对象属性时,应在putobjattr子程序中使用 SEC_DELETE 类型。
由putobjattr子程序更改的数据必须通过调用putobjattr子程序显式提交,调用时必须使用指定 SEC_COMMIT 类型的类型参数。 在所有数据提交之前,只有进程中的getobjattr和getobjattrs子程序会返回修改后的数据。 在使用setkst命令将整个数据库发送到内核安全表或重启系统之前,对域数据库所做的更改不会影响安全考虑。
参数
| 项 | 描述 |
|---|---|
| 对象 | 对象名。 除非 "类型" 参数是 SEC_COMMIT ,否则必须指定此参数。 |
| 属性 | 指定要写入的属性。 usersec.h文件中定义了以下可能的属性:
属性类型为 SEC_CHAR S_SECFLAGS 对象的安全标志。 有效值为 FSF_DOM_ALL 和 FSF_DOM_ANY。 属性类型为 SEC_INT |
| VALUE | 根据 Attribute 和 Type 参数的值指定缓冲区,指向缓冲区的指针或指向指针的指针。 请参阅 Type 参数以获取更多详细信息。 |
| TYPE | 指定属性的类型。 以下有效类型在usersec.h文件中定义:
|
安全性
访问的文件:
| 项 | 描述 |
|---|---|
| 文件 | 方式 |
|
|
返回值
如果成功,putobjattr子例程返回 0。 否则,返回值为-1,并设置errno全局值来指示错误。
错误代码
如果putobjattr子例程失败,将设置以下其中一个errno值:
| 项 | 描述 |
|---|---|
| EINVAL | Obj 参数为 NULL , Type 参数不是 SEC_COMMIT。 Obj 参数为 default 或 ALL Attribute 参数为 NULL , Type 参数不是 SEC_NEW , SEC_DELETE 或 SEC_COMMIT。 Attribute 参数不包含其中一个已定义的属性。 Type 参数不包含其中一个定义的值。 Value 参数不指向有效缓冲区或此类型属性的有效数据。 |
| ENOENT | Obj参数指定的对象不存在。 |
| ENOMEM | 无法分配内存。 |
| EPERM | 不允许该操作。 |