这是内核在其内部内存结构中维护的.
Linux内核使用称为struct task_struct的东西:
Every process under Linux is dynamically allocated a struct task_struct structure.
在Linux内核4.12.10中,定义如下:
struct task_struct {
...
/* Objective and real subjective task credentials (COW): */
const struct cred __rcu *real_cred;
/* Effective (overridable) subjective task credentials (COW): */
const struct cred __rcu *cred;
struct cred {
...
kuid_t uid; /* real UID of the task */
kgid_t gid; /* real GID of the task */
kuid_t suid; /* saved UID of the task */
kgid_t sgid; /* saved GID of the task */
kuid_t euid; /* effective UID of the task */
kgid_t egid; /* effective GID of the task */
kuid_t fsuid; /* UID for VFS ops */
kgid_t fsgid; /* GID for VFS ops */
用户空间进程无法直接访问这些结构.为了获得此信息,此类进程必须使用系统调用(例如getuid()和geteuid())或/ proc文件系统.