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

标签 process linux-kernel userid process-group

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

由于我无法使用诸如 getuid() 等用户空间函数,因此是否有一种方法可以在内核空间内获取这些函数?

最佳答案

您应该能够使用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 行。

关于process - 从task_struct和pid_namespace获取用户ID和进程组ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33445815/

相关文章:

linux - 并行运行 top 和 free-m 命令

c - sysconf(_SC_CLK_TCK) 与 CLOCKS_PER_SEC

java: 停止子进程

c - 系统调用劫持 : How to pass arguments?

angular - 如何获取当前用户ID angular 4?

ios - 如何在Google Analytics界面查看userID?

java - 终止在不同类中创建的进程

带 LD 的 Linux 最小加载地址

linux - Docker: "From"指令的好处?

php - 从1个表中获取一个userId并将其写入另一个表中