加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 00:32:17 所属栏目:Linux 来源:网络整理
导读:正如LDD3第6章p175所示,我们可以通过current- uid和current- euid来获取当前进程UID和EUID. 但是 Linux Kernel 4.2的struct task_struct的定义不再包含uid或euid命名的字段. 所以,我想知道是否有其他方法可以获得UID和EUID? 谢谢! 解决方法 .uid和.euid字
正如LDD3第6章p175所示,我们可以通过current-> uid和current-> euid来获取当前进程UID和EUID.
但是 Linux Kernel 4.2的struct task_struct的定义不再包含uid或euid命名的字段.
所以,我想知道是否有其他方法可以获得UID和EUID?
谢谢!

解决方法

.uid和.euid字段被移动到struct cred,现在在struct task_struct中公开为.cred字段.它是在这个提交中完成的: CRED: Separate task security context from task_struct.如果你查看diff for 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()实现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读