预留的UIDs/GIDs和半预留的UIDs/GIDs

当安装新系统时,根据所选择的软件包,某些软件包的用户标识(UID)并不总是相同的。
例如:'sshd' 的 UID 可能是 102,有时可能是其他值。而 'www-data' 的 UID 总是 '33'。
我如何找出所有具有保留 UID(例如 www-data)的软件包以及生成伪随机管理 UID(小于1000,例如:sshd)的所有软件包?这也适用于组标识(GID)。
是否有一个列出所有这些软件包的列表?或者是否有一个 aptitude 命令可以让我找出所有这些软件包,即使它们没有安装?
谢谢。
1个回答

UID和GID 0-99是固定的,始终保持不变。它们由软件包base-passwd创建。
100-999是动态分配的,通常按照用户/组在系统上创建的顺序进行分配。
请参阅Debian/Ubuntu政策手册中的“UID和GID类别”部分,了解更多类别信息。
据我所知,没有关于创建用户或组的软件包列表。
软件包在其*.preinst*.postinst脚本中创建额外的用户和组。因此,要找到已安装的创建用户的软件包,请查找这些脚本。
grep 'adduser ' /var/lib/dpkg/info/*inst

可能是一个起点(将adduser替换为addgroup以用于组)。

Ubuntu政策手册似乎已经不再存在;它已经过时了很长一段时间,然后在2019年中被移除(这是最后的存档)。我相信这完全继承自Debian政策手册 - 请参阅§ 9.2.2:UID和GID类别 - Adam Katz