【问题标题】:how to get user of current process如何获取当前进程的用户
【发布时间】:2013-02-13 01:07:46
【问题描述】:

使用struct task_struct http://lxr.linux.no/linux+v2.6.30.5/include/linux/sched.h#L246中定义的进程如何获取当前用户?我必须检查用户是否是root用户。我显然不能使用 getuid

【问题讨论】:

  • 你打算做什么?你有任何代码可以显示吗?

标签: c linux linux-kernel


【解决方案1】:

您可以使用task_uid 来获取task_struct 的用户ID,或者如果您需要的话,可以使用task_euid

【讨论】:

    【解决方案2】:

    试试getlogin_r() 函数。它在 unistd.h 中定义并返回用户名。查看man getlogin_r 了解其他选项。

    int getlogin_r(char *buf, size_t bufsize);
    

    【讨论】:

    • 对用户空间来说不是一个糟糕的答案,但内核无权访问getlogin_r
    • 我认为这个问题是从内核的角度来看的。
    【解决方案3】:

    最终使用了一个成员变量 uid_t uid,我一开始并没有看到。检查了我使用的linux版本(旧)并在这里找到了它:http://lxr.linux.no/linux+v2.6.18/include/linux/sched.h#L246

    对不起

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 2013-02-02
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多