我了解* 主要管理员用户的用户 ID 为501
,后续用户获得增量编号(502
、503
、 ...)。但为什么501
?有什么特别之处50x
,这个选择的历史/技术原因是什么?
* 当我好奇为什么我的外部硬盘驱动器内有所有垃圾文件时,我开始研究这个问题.Trashes/501
。我的搜索使我得出的结论501
是 *nix 系统中主管理员的用户 ID(我在 macOS 上),但不是为什么。
答案1
许多 Unix 系统开始向某个特定编号的用户分发 UID。 Solaris 将为第一个通用用户 UID 100,在 OpenBSD 上为 1000,在 macOS 上,它的 UID 501 将成为第一个创建的交互式用户的 UID,该用户也可能是 macOS 管理员用户(这与作为 root 用户)。
数字较小的帐户是守护程序等的系统用户帐户。这使得更容易区分交互式“人类”帐户和系统服务帐户。这也可以使各种软件中的用户管理、身份验证等变得更加容易。YP/NIS,一个稍微过时的系统,用于将用户帐户(和其他信息)保存在中央服务器上,而无需在多个客户端计算机上创建本地用户,例如,它有一个它应该处理的用户帐户范围的设置MINUID
。MAXUID
在某些 Unices 上,可以将一系列系统服务帐户分配给第三方软件,例如 FreeBSD 上的 UID 50 到 999 或 OpenBSD 上的 UID 500 到 999。
所有这些范围都是由各个 Unices 的制造商和维护者根据其操作系统的预期需求来选择的。 POSIX 标准没有提及这些事情。最低和最高的可分配 UID(和 GID)通常由本地管理员配置(请参阅adduser
手册)。
root
大多数 Unices 为超级用户保留 UID 0 ,并为用户分配尽可能高的 UID(或至少某个高值) nobody
(Solaris 使用 UID 60001,OpenBSD 使用 32768,但 UID 可能是很多比那个大)。
(请参阅有关 UID 0 始终存在(或不存在)的评论root
,这与本主题略有偏离)
更新:OpenBSD 项目最近被拒绝随机化 UID/GID 分配的想法。
答案2
对于遵循以下的发行版最低有效位,它们静态分配 UID 和 GID 0-99。 UID 100-499 是动态分配的,但这些也是用于系统的,而不是用于登录帐户的。
例如,打印守护程序cups
往往会分配自己的用户帐户。因此,如果守护程序中的漏洞被利用,则守护程序不会像root
完全控制系统一样运行。 (它也不一定有能力干扰其他守护进程)。
在更新的 Linux 发行版上,系统范围扩展到 999。
这将为登录帐户留下 500 以上(或 1000 以上)的 UID。
Debian 另外还有一个静止的分配给用户识别码GID 100,尽管我无法想象该偏差会导致任何特定问题。
很容易想象另一个具有相差一偏差的系统,它额外保留了 UID 500。(我认为这仍然是合规的;我无法想象所有的 Linux 都违反了 LSB 这么长时间,而没有正在更新)。
第一个登录帐户不必是管理员帐户或主管理员帐户。系统不一定使用sudo
(特别是如果它们早于它 :)。您可能会说root
在这种情况下是“主管理员帐户”。除此之外,*nix 和通用 Linux 发行版不识别特定的“主管理员帐户”。