【发布时间】:2013-03-24 08:43:23
【问题描述】:
我正在编写 linux 内核代码。我在 VFS 中,我想修改它。我想添加一个检查以查看用户是否是 root 并基于此做出决定。我该怎么做呢?是否有 getuid() 的内核版本?或者像“current->”这样的结构是否包含当前进程的用户信息?
【问题讨论】:
标签: linux-kernel file-permissions user-permissions
我正在编写 linux 内核代码。我在 VFS 中,我想修改它。我想添加一个检查以查看用户是否是 root 并基于此做出决定。我该怎么做呢?是否有 getuid() 的内核版本?或者像“current->”这样的结构是否包含当前进程的用户信息?
【问题讨论】:
标签: linux-kernel file-permissions user-permissions
您可以使用include/linux/cred.h 中定义的current_cred(),这将为您提供指向同一标头中定义的struct cred 本身的指针。类似的东西
if (current_cred()->uid != 0)
return -EPERM;
【讨论】:
current_cred()->uid 返回一个 kuid_t(不是整数)。
如前所述,current_cred()->uid 现在返回 struct kuid_t。要获得您需要 current_cred()->uid.val 和最终类型转换以消除警告的值。
if ((int)current_cred()->uid.val != 0)
return -EPERM;
【讨论】: