使用不同的 UID 和 GID 创建的用户

joa*_*dre 2 linux users useradd

我正在我的系统中创建一个新用户,通过调用:

sudo useradd -m -G nas -s /bin/bash alf
Run Code Online (Sandbox Code Playgroud)

据说应该创建一个具有相同 UID 和 GID 的新用户。但是,该passwd文件附加了以下行:

alf:x:1004:1007::/home/alf:/bin/bash
Run Code Online (Sandbox Code Playgroud)

其中 UID 为 1004,GID 为 1007。我创建的其他用户具有相同的 UID 和 GID,为什么会发生这种情况?

War*_*ung 6

useradd 仅在以下任一情况下使用相同的 UID 和 GID:

  • 它不会引起冲突;或者

  • 你用-u-g标志强制它

它将跳过已经在使用的 ID。因此,我猜您已经添加了其他用户和/或组,因为您创建了那些具有匹配 UID/GID 对的用户和/或组。¹

为了使 ID 恢复到锁定步骤,​​您可以创建下一个带有-g-u标志的 ID,使其 ID 等于尚未分配的最高 UID 和 GID 后的 1。后续useradd调用不会填补空白。他们只会开始编号超过新的高水位线。

不同步 UID 和 GID 值并没有错。在这种情况下,系统将工作得很好。旧式 Unix 系统通常不使用 group-per-user 方案,因此 ID 从一开始就从未同步过。


脚注:

  1. 您可能没有以交互方式执行此操作。许多包添加组,有时还添加用户,以限制对该包拥有的文件和其他设施的访问。通常他们使用低于 1000 的操作系统保留组 ID 来执行此操作,但并非总是如此。当他们添加一个组而不是一个用户时,它会使两组 ID 值不同步。