Kernel

使用 cred.h 在系統呼叫 LKM 中獲取系統呼叫者的 uid 時出現問題

  • January 1, 2021

我試圖獲取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;   \

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

引用自:https://unix.stackexchange.com/questions/627062