当 /proc/<pid>/status 文件中 UID 和 GID 字段的列值不同时

When the column values for UID and GID fields in /proc/<pid>/status file will differ

这是示例 /proc/pid/status 文件的输出。

procfs(5) 手册页,发现那些是 真实、有效、已保存和文件系统 UID

Uid:    998     998     998     998
Gid:    996     996     996     996

这里都显示相同的值。

因此,这四列可能会显示不同的 UID。 特别是在 Real、Effective 和 Filesystem UID 之间。

以此为题:

So, in any chance those four columns will show different UIDs.

是的。受到各种限制,进程可以更改其有效和已保存的 UID 和 GID。这就是 setuid()setgid()seteuid()setegid() 函数的作用。

文件系统 uid 和 gid 是 Linux 特定的功能,主要(如果不是全部)在 NFS 上下文中使用(请参阅 filesystem uid and gid in linux)。这些可以使用 setfsuid()setfsgid() 进行操作,同样受到限制。

对于大多数进程,所有的 UID 都相同,所有的 GID 都相同,但可以想象它们都不同。它是进程行为的函数。