进程的 EUID、EGID 等到底存储在哪里?

进程的 EUID、EGID 等到底存储在哪里?

我刚刚读了一些关于 Linux 权限的文章,我发现那里从未提到过这一点。我想知道它是如何工作的。

示例情况:执行read_file.out读取文件~/file.txt并将其内容打印到的二进制文件。这将创建一个进程,系统根据创建该进程的用户和/或用户的身份 来stdout决定是否可以读取。~/file.txtEUIDEGID

这些值到底存储在哪里?系统在哪里查看才能说出
我看到你的EUID是1002,所以你可以读取这个文件。
或者
您的 EUID 是 1003,这意味着您无法读取它,而且您也不属于任何可以访问此文件的组的成员,因此我不会允许您读取它。“?

我发现伪文件系统中有一些文件/proc/<pid>/,特别是/proc/<pid>/stat/proc/<pid>/status(更好可读的版本stat)。这些是系统根据其决定权限的文件,还是它们只是仅用作诸如 之类的命令源的“信息”文件ps

谢谢您的回答。

答案1

在内核数据结构中。中的虚拟文件/proc/<pid>/只是它们的视图。现在,我可以挖掘源代码,但我怀疑它是否真的有用。每个进程可能只有一个简单的 C 结构,其中包含所有 UID 和 GID 的字段以及一个辅助组表以及其他每个进程的数据。

相关内容