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

use*_*821 2 process userid linux-kernel process-group

我试图修改Linux内核和我需要从获取用户ID和进程组ID task_struct和一个pid_namespace。尽管我在源代码中搜索了它们的定义,但是我找不到任何全局变量或函数(可能由于缺少代码中的注释而丢失了)来访问它们。

因为我不能使用诸如getuid()等等的用户空间函数,有没有一种方法可以在内核空间中获取它们?

Joe*_*l C 6

您应该可以使用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行。