為什麼主管理員 UID 是 501?

為什麼主管理員 UID 是 501?

我了解* 主要管理員使用者的使用者 ID 為501,後續使用者獲得增量編號(502503、 ...)。但為什麼501?有什麼特別之處50x,這個選擇的歷史/技術原因是什麼?

* 當我好奇為什麼我的外部硬碟內有所有垃圾檔案時,我開始研究這個問題.Trashes/501。我的搜尋使我得出的結論501是 *nix 系統中主管理員的使用者 ID(我在 macOS 上),但不是為什麼

答案1

許多 Unix 系統開始向某個特定編號的使用者分發 UID。 Solaris 將為第一個通用用戶 UID 100,在 OpenBSD 上為 1000,在 macOS 上,它的 UID 501 將成為第一個創建的交互式用戶的 UID,該用戶也可能是 macOS 管理員用戶(這與作為root 用戶)。

數字較小的帳戶是守護程式等的系統使用者帳戶。這也可以使各種軟體中的使用者管理、身份驗證等變得更加容易。YP/NIS例如,一個稍微過時的系統,用於將用戶帳戶(和其他資訊)保存在中央伺服器上,而無需在多個客戶端電腦上創建本地用戶,它有一個MINUIDMAXUID它應該處理的用戶帳戶範圍的設置。

在某些 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。

第一個登入帳號不必是管理員帳號也不必是主管理員帳號。系統不一定會使用sudo(特別是如果它們提前了:)。您可能會說“主管理員帳戶”就是root這種情況。除此之外,*nix 和通用 Linux 發行版無法識別特定的「主管理員帳戶」。

相關內容