使用 cred.h 在系统调用 LKM 中获取系统调用者的 uid 时出现问题

使用 cred.h 在系统调用 LKM 中获取系统调用者的 uid 时出现问题

我试图获取uid正在调用我的系统调用的进程运行程序。我使用linux/cred.h它的宏称为current_uid().

问题是它返回一个我不知道的类型,kuid_t。所以我无法将返回值保存到int类型静态变量。以下是部分代码和错误:

static int getuid(void){
    return current_uid();
}

static int caller_uid = getuid();

错误:

error: incompatible types when returning type ‘kuid_t’ {aka ‘const struct <anonymous>’} but ‘int’ was expected
  current_cred()->xxx;   \

答案1

kuid_t定义为linux/uidgid.h它只是一个具有一个成员的简单结构uid_t

typedef struct {
    uid_t val;
} kuid_t;

您应该能够uid_t使用current_uid().valand uid_tis just an来获取值usigned int

相关内容