【问题标题】:Get struct cred from PID从 PID 获取 struct cred
【发布时间】:2016-05-16 18:05:10
【问题描述】:

我需要以某种方式检索真实有效的 UID 和 GID 以及进程的补充组,只知道它的 PID。

文件fs/proc/array.c为此使用struct cred(p是struct task_struct *p):

cred = get_task_cred(p);

但是,我找不到在用户模式下使用另一个进程的 PID 检索这样一个结构的方法。

有没有办法从用户模式(unix kernel 3.13)获取信息?

【问题讨论】:

    标签: linux security process permissions credentials


    【解决方案1】:

    有关进程的信息存储在proc filesystem 中,其中每个进程都有其各自的目录。您要查找的字段是 Uid:Gid:,它们还包含有效的 UID/GID。

    来自kernel documentation

    stat        Process status
    statm       Process memory status information
    status      Process status in human readable form
    

    但是,您也可以从同一个kernel documentation 找到:

    Uid                         Real, effective, saved set, and  file system UIDs
    Gid                         Real, effective, saved set, and  file system GIDs
    

    由于 proc 文件系统提供的文件 status 只是一个文本文件,您可以继续从那里以任何您喜欢的方式读取所需的信息,例如 fscanf()

    【讨论】:

    • 我之前看到过关于/proc/(PID)/status 的文档,但是手册页上说它是“stat 和 statm 的人类可读版本”。我怀疑 /proc/(PID)/status 应该以编程方式处理。
    • 文件是人类可读的形式并不排除它被程序处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2012-08-29
    • 2017-08-25
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多