从PID获取struct cred

时间:2016-02-06 21:18:12

标签: linux security process permissions credentials

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

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

cred = get_task_cred(p);

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

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

1 个答案:

答案 0 :(得分:0)

有关进程的信息存储在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()