gpt4 book ai didi

linux-kernel - 如何在 Linux Kernel 4.2 中获取当前进程的 UID 和 EUID?

转载 作者:行者123 更新时间:2023-12-04 05:17:03 29 4
gpt4 key购买 nike

如LDD3第6章p175所示,我们可以通过current->uid获取当前进程的UID和EUID和 current->euid .
但是struct task_struct的定义Linux Kernel 4.2 不包含由 uid 命名的字段或 euid没有了。
那么,我想知道是否还有其他方法可以获取 UID 和 EUID ?
谢谢!

最佳答案

.uid.euid字段已移至 struct cred ,现在公开为 .cred字段在 struct task_struct .这是在这个提交中完成的:CRED: Separate task security context from task_struct .如果您查看 include/linux/sched.h 的差异文件,您可以注意到此更改:

-   uid_t uid,euid,suid,fsuid;
- gid_t gid,egid,sgid,fsgid;
+ struct cred *cred; /* actual/objective task credentials */

所以现在而不是:

current->uid;
current->euid;

你应该使用:

const struct cred *cred = current_cred();

cred->uid;
cred->euid;

请注意 current_cred()函数应该用于访问 .cred字段,因为它是 RCU指针。

还可以查看 check_same_owner()例如实现。

关于linux-kernel - 如何在 Linux Kernel 4.2 中获取当前进程的 UID 和 EUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39229639/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com