从 task_struct 和 pid_namespace 获取用户 ID 和进程组 ID

Getting a user ID and a process group ID from a task_struct and a pid_namespace

我正在尝试修改 Linux 内核,我需要从 task_structpid_namespace 获取用户 ID 和进程组 ID。虽然我在源代码中搜索了它们的定义,但我找不到任何全局变量或函数(可能是因为代码中缺少注释而我丢失了)来访问它们。

有没有一种方法可以将它们放入内核 space 因为我不能使用像 getuid() 等用户 space 函数?

您应该可以使用 task_struct->cred->uidtask_struct->real_cred->uid。话虽如此,我还没有对此进行测试,这只是对 LXR 的粗略阅读(include/linux/sched.h 第 1508 行和 include/linux/cred.h 第 127 行)。

如果您想要 PGID,请尝试 pid_vnr(task_pgrp(task_struct))。此代码来自 kernel/sys.c 第 990 行。