我想知道Linux内核在哪里存储'ruid'和'euid'。
以下是我所了解的:
当用户运行文件并将其转换为进程时,该进程会获得ruid和euid。
如果文件被设置为使用setuid,则进程的euid将更改为该文件所有者的用户ID。如果没有设置,则euid将不会更改,并且与ruid相同。
然后,Linux内核允许进程根据ruid和euid运行另一个进程或使用系统中的其他资源。
因此,我认为这意味着内核必须在RAM中某个地方保存每个进程的ruid和euid。
我以为“某个地方”在PCB中,但PCB块没有ruid和euid字段。
我试图在'/proc'目录的进程文件中找到它们,但失败了。
Linux在哪里保存正在运行进程的ruid和euid?
/proc/$pid/status
文件。但那将是从内核读取的相同数据。因此,如果您想更改进程的UID,则必须在内核空间中执行此操作,而唯一的方法(最终)是使用系统调用。 - Sam Protsenko