下面的链接在不同的上下文中讨论这些概念。我读过他们的定义,但我仍然不知道它们之间有什么关系,或者其中一些是一样的。
根据man id,如果我输入id,我应该得到他们所说的有效和真实的组ID。
id uid=501(joe) gid=501(joe) groups=501(joe), 100(users)但是,维基百科引用id的输出来区分主ID和补充ID。此外,维基百科区分了主要的和补充的和有效的和真实的组ids。这些概念是如何相互关联的?
另外,主组ID =组ID =当前组ID是真的吗?
发布于 2011-08-06 22:36:39
你在这里混合了两个不同的区别:
第一个区别是指进程是如何运行的。通常,当您运行命令/程序时,它是以用户的权限运行的。它的真实组id与用户的主组相同。这可以由进程更改,以便作为另一个特殊组的成员执行某些任务。为此,程序使用更改其有效组id的setgid函数。
第二个区别是指用户。每个用户都有他/她的主组。每个用户只有一个,在id命令的输出中称为gid。除此之外,每个用户都可以属于多个辅助组--这些组列在id输出的末尾。
编辑:
我同意id的管理手册在这里有些误导。这可能是因为它是信息文档提供的描述的精简版本。要更清楚地看到它,请运行info coreutils "id invocation" (如id手册末尾所建议的)。
发布于 2011-08-07 23:30:23
从概念上讲,有三组组是流程的成员。每一组都是以下集合的子集。
由于历史原因,这些集合分别是:
通常,程序只有一个用户ID。如果可执行程序设置了塞图德模式位,那么程序就有两个用户ID :它的有效用户ID是文件权限、每个用户限制、确定进程是否以根用户身份运行的有效用户ID。进程可以在有效用户if和实际用户if之间切换,如果它不需要任何时候都需要额外的权限,或者需要在两个非根用户之间切换。
对于组也存在相同的机制。对于组,有一个在系统设计时不存在的附加特性:进程可以是任意数量组的成员;这些是辅助组ID。
一旦用户通过身份验证,登录过程就会切换到该用户,就在启动用户的shell (或用户请求的任何程序)之前。在切换到所需的用户(并失去根权限)之前,登录过程切换到所需的组。
在早期的unix版本中,进程只能在一个组中。这个组是用户的主组ID,存储在用户数据库中(通常是/etc/passwd)。该组将成为登录进程启动的shell或其他程序的真实有效组ID。
现在,一个进程可以是多个组,所以用户也可以是多个组。组数据库(通常是/etc/group)包含每个组的用户列表。这些组成为登录进程启动的程序的辅助组ID。
https://unix.stackexchange.com/questions/18198
复制相似问题