multithreading - 有没有办法从进程的 task_struct 中找出哪个用户拥有进程?

标签 multithreading process permissions linux-kernel pid

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

最佳答案

不幸的是,用户/组 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) */

关于multithreading - 有没有办法从进程的 task_struct 中找出哪个用户拥有进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13104803/

相关文章:

c - PROCESS SYSTEM CALL中PID的变量类型是什么?

wpf - 在WPF中显示多个对话框是否安全?

Java + Redis Pub/Sub - 帮助选择一个好的 Worker 实现

mysql - Nodejs中有多少个工作线程?是否可以修改该数量以获得更好的性能?

django - Errno 13 权限被拒绝 : media folder with localhost

php - PHP写入权限问题

c++ - 在 Windows/Linux 中检查对文件的写入权限

c# - 从不同的线程调用相同的方法

c - 管道上的写操作总是失败

linux - 为什么在删除关联的 *.py 文件时删除 *.pyc 文件