【问题标题】:Check for user = root within linux kernel?检查linux内核中的用户= root?
【发布时间】:2013-03-24 08:43:23
【问题描述】:

我正在编写 linux 内核代码。我在 VFS 中,我想修改它。我想添加一个检查以查看用户是否是 root 并基于此做出决定。我该怎么做呢?是否有 getuid() 的内核版本?或者像“current->”这样的结构是否包含当前进程的用户信息?

【问题讨论】:

    标签: linux-kernel file-permissions user-permissions


    【解决方案1】:

    您可以使用include/linux/cred.h 中定义的current_cred(),这将为您提供指向同一标头中定义的struct cred 本身的指针。类似的东西

      if (current_cred()->uid != 0)
         return -EPERM;
    

    【讨论】:

    • 这会引发类型错误。也许它在 13 年没有,但现在 current_cred()->uid 返回一个 kuid_t(不是整数)。
    【解决方案2】:

    如前所述,current_cred()->uid 现在返回 struct kuid_t。要获得您需要 current_cred()->uid.val 和最终类型转换以消除警告的值。

    if ((int)current_cred()->uid.val != 0)
         return -EPERM;
    

    【讨论】:

      猜你喜欢
      • 2013-05-05
      • 2013-07-11
      • 1970-01-01
      • 2014-06-01
      • 2018-08-10
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多