我刚刚读了一些关于 Linux 权限的文章,我发现那里从未提到过这一点。我想知道它是如何工作的。
示例情况:执行read_file.out
读取文件~/file.txt
并将其内容打印到的二进制文件。这将创建一个进程,系统根据创建该进程的用户和/或用户的身份 来stdout
决定是否可以读取。~/file.txt
EUID
EGID
这些值到底存储在哪里?系统在哪里查看才能说出
“我看到你的EUID是1002,所以你可以读取这个文件。“
或者
”您的 EUID 是 1003,这意味着您无法读取它,而且您也不属于任何可以访问此文件的组的成员,因此我不会允许您读取它。“?
我发现伪文件系统中有一些文件/proc/<pid>/
,特别是/proc/<pid>/stat
和/proc/<pid>/status
(更好可读的版本stat
)。这些是系统根据其决定权限的文件,还是它们只是仅用作诸如 之类的命令源的“信息”文件ps
?
谢谢您的回答。
答案1
在内核数据结构中。中的虚拟文件/proc/<pid>/
只是它们的视图。现在,我可以挖掘源代码,但我怀疑它是否真的有用。每个进程可能只有一个简单的 C 结构,其中包含所有 UID 和 GID 的字段以及一个辅助组表以及其他每个进程的数据。