有没有办法从流程的task_struct中找出用户拥有流程的内容?

Mas*_*son 7 permissions multithreading pid process linux-kernel

我有一个task_struct *通过电话得到的find_task_by_vpid(get_pid()).我想找出用户拥有该进程的内容,以便我可以在我正在编写的系统调用中进行一些权限检查,但查看task_struct源代码并没有多大帮助.唯一看起来有用的是loginuid,但由于某种原因,如果我试图像这样访问它,内核将无法编译:my_task_struct->loginuid.是否有另一种方法可以让用户调用该进程task_struct

R..*_*R.. 7

遗憾的是,用户/组ID不再存储在任务结构中,而是存储在一个单独的权限结构中,该结构在具有相同ID的所有任务之间动态分配和共享.这反过来会造成一种情况,即setuid由于资源耗尽而导致失败,并且setuid支持特权的失败是臭名昭着的漏洞来源......

无论如何,它是在以下成员task_struct:

    const struct cred __rcu *real_cred; /* objective and real subjective task
                                     * credentials (COW) */
    const struct cred __rcu *cred;  /* effective (overridable) subjective task
                                     * credentials (COW) */
Run Code Online (Sandbox Code Playgroud)