上下文:我正在获取当前的Ruby进程ID。
Process.pid #=> 95291
Process.ppid #=> 95201
Process.uid #=> 501
Process.gid #=> 20
Process.euid #=> 501
Process.egid #=> 20
发布于 2015-05-27 21:33:16
按顺序:
pid
:是调用Process.pid
方法的进程的进程ID (PID)。ppid
:父进程(生成当前进程的进程)的PID。例如,如果在Bash中运行ruby test.rb
,则该进程中的PPID将是bash的PID。uid
:进程正在运行的用户的UNIX。euid
:进程正在运行的有效用户ID。EUID根据使用此UID的用户允许做什么来确定允许程序做什么。通常与uid
相同,但与sudo
之类的命令不同。gid
:程序运行的UNIX。egid
:像euid
一样,但是对于团体来说。发布于 2015-05-27 21:34:29
PID:
在Linux中,存储在磁盘上的可执行文件称为程序,加载到内存中并运行的程序称为进程。当进程启动时,它被赋予一个名为process (PID)的唯一编号,它将该进程标识到系统。例如,如果您需要终止一个进程,您可以通过它的PID引用它。
PPID:
除了一个唯一的进程ID之外,每个进程都被分配了一个父进程ID (PPID),用于指示哪个进程启动了它。PPID是进程的父进程的PID。 例如,如果PID为101的process1启动了一个名为process2的进程,那么process2将被赋予一个唯一的PID,例如3240,但它将被赋予101的PPID。这是亲子关系。一个单亲进程可能会产生多个子进程,每个子进程都具有唯一的PID,但它们都共享相同的PPID。
UID:
类似Unix的操作系统通过一个名为UID或用户ID的值来标识内核中的用户。UID以及GID和其他访问控制标准被用来确定用户可以访问哪些系统资源。密码文件将文本用户名映射到UID,但在内核中只使用UID。
EUID:
进程的有效UID (euid)用于大多数访问检查。它还用作该进程创建的文件的所有者。
GID:
组标识符(通常缩写为GID )是用于表示特定组的数值。GID的值范围在不同的系统之间不同;至少,GID可以在0到32,767之间,但有一个限制:超级用户的登录组必须有GID 0。
EGID:
进程的有效GID (egid)还会影响访问控制,也可能会影响文件创建,这取决于所使用的特定内核实现的语义以及可能使用的挂载选项。
有关更多信息,请参阅这些文章:
发布于 2020-07-24 14:11:41
除了上述全面的答案之外,我还想分享一些linux命令和相应的输出,这些命令和输出可能有助于实现当前登录的用户myuser的real和有效用户id/组之间的差异。
真实用户名和组名及数字ID
$ id
uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),119(lpadmin),130(lxd),131(sambashare)
有效用户名和组名及数字ID
$ sudo id
uid=0(root) gid=0(root) groups=0(root)
https://stackoverflow.com/questions/30493424
复制相似问题