为什么主管理员 UID 是 501?

use*_*369 12 osx users history unix-philosophy

我了解*主要管理员用户的用户 ID 为501,后续用户获得增量编号 ( 502, 503, ...) 但为什么501?有什么特别之处50x,这个选择的历史/技术原因是什么?

* 当我对为什么我的外部硬盘驱动器里面有所有垃圾文件感到好奇时,我开始研究这个.Trashes/501。我的搜索使我得出结论501是 *nix 系统中主管理员的用户 ID(我在 macOS 上),但不是为什么.

Kus*_*nda 22

许多 Unix 系统开始向某个特定号码的用户分发 UID。Solaris 将给第一个通用用户 UID 100,在 OpenBSD 上它是 1000,而在 macOS 上它似乎是 UID 501,它将成为第一个创建的交互式用户的 UID,这也可能是一个 macOS 管理员用户(这不一样)作为 root 用户)。

数字较小的帐户是守护进程等的系统用户帐户。这使得区分交互式“人类”帐户和系统服务帐户变得更加容易。这也可以使各种软件中的用户管理、身份验证等更加容易。YP/NIS是一个稍微过时的系统,用于在中央服务器上保存用户帐户(和其他信息),而无需在多个客户端计算机上创建本地用户,例如,它有一个MINUIDMAXUID设置它应该处理的用户帐户范围。

在某些 Unices 上,一系列系统服务帐户可能会分配给第三方软件,例如 FreeBSD 上的 UID 50 到 999 或 OpenBSD 上的 500 到 999。

所有这些范围都是由各个 Unices 的制造商和维护者根据其操作系统的预期需求选择的。POSIX 标准没有说明这些事情。最低和最高可分配 UID(和 GID)通常由本地管理员配置(请参阅您的adduser手册)。

大多数的Unices预留UID 0 root,超级用户,并分配最高可能的UID(或至少一些高值)发送到用户nobody(Solaris使用UID 60001,OpenBSD使用32768,但的UID可为比大)。

(请参阅有关 UID 0 始终存在root(或不存在)的评论,这与本主题略有偏离)


更新:OpenBSD 项目最近拒绝了随机化 UID/GID 分配的想法。


sou*_*edi 8

对于遵循LSB 的发行版,它们静态分配 UID 和 GID 0-99。UID 100-499 是动态分配的,但这些也是用于系统的,而不是用于登录帐户的。

例如,打印守护进程cups往往会分配到自己的用户帐户。因此,如果守护进程中的漏洞被利用,守护进程就不会像root系统一样以全功率运行。(它也不一定有能力干扰其他守护进程)。

在较新的 Linux 发行版上,系统范围扩展到 999。

这将使登录帐户的 UID 为 500 以上(或 1000 以上)。

Debian 也有一个静态的的分配用户标识GID 100,虽然我无法想象这种偏差会导致任何特定问题。

很容易想象另一个系统有一个偏差,它另外保留了 UID 500。(我认为这仍然是合规的;我无法想象所有的 Linux 已经违反 LSB 这么长时间了,没有它正在更新)。

第一个登录帐户不必是管理员帐户或主管理员帐户。系统不一定使用sudo(特别是如果它们早于它:)。您可能会说“主要管理员帐户”就是root这种情况。除此之外,*nix 和通用 Linux 发行版不识别特定的“主管理员帐户”。

  • `在最近的 Linux 发行版中,系统范围扩展到 999。` - 我的用户 ID 总是从 1000 起,我从 2005 年开始使用 Linux。我不会称之为“最近”。 (4认同)