我想知道Linux内核在哪里保持' ruid'和' euid'。
以下是我对它们的了解。
当用户运行文件并且文件转向进程时,进程将变为ruid和euid。
如果文件已设置为使用setuid,则进程的euid将更改为该文件所有者的用户ID,如果不是,则euid将不会更改并与ruid相同。
然后,Linux内核允许进程根据ruid和euid运行另一个进程或使用系统中的其他资源。
所以,我认为这意味着内核必须在RAM中的每个进程中保持ruid和euid。
我以为在某个地方'在PCB中,但PCB块没有ruid和euid字段。
我试图在' / proc'的过程文件中找到它们。目录,但失败了。
Linux在哪里保持ruid和euid运行进程?
答案 0 :(得分:1)
以下是对新内核如何工作的解释:
setreuid()
系统调用来更改真实有效的用户ID。有关使用详情,请参阅man 2 setreuid struct cred
;请查看struct task_struct .cred
字段
RUID存储在.uid
的{{1}}字段中;请参阅setreuid()系统调用代码:
struct cred
commit_creds()函数实际上是将RUID和EUID设置为当前进程
另请参阅此答案以获得有关旧内核的线索:How to get current process's UID and EUID in Linux Kernel 4.2?