创建用户帐户时如何影响从属 UID/GID 的分配?

0xC*_*22L 7 linux ubuntu shadow userns

据我所知,从属 UID 和 GID 以形成连续范围的方式分配给帐户。

默认情况下,该范围从 100000 开始,并且可能会扩展到 UID/GID 的理论最大值(尽管我还没有找到从 shell 查询它的方法,/etc/login.defs只列出了工具允许的值)。

现在,如果范围从 100000 的倍数开始,即n*100000使用n正整数 ( n>0) 而不是100000+n*65536. 这样我就可以立即看到哪个文件归哪个主机用户所有。

有没有一种方法可以以某种方式影响从属 UID/GID 的分配,shadow-utils以达到更现代的可读性?

如果没有,是否可以简单地覆盖文件/etc/subuid/etc/subgid使用符合要求的数据来获得我想要的?

Whi*_*olf 1

是的,这可以/etc/login.defs使用SUB_UID_MINSUB_UID_MAXSUB_UID_COUNT参数及其它们进行配置SUB_GID_*对应项进行配置。

所有这些参数都在中描述login.defs,但是本文档中给出的默认值并不适用于所有平台。

根据手册页,默认情况下应使用与您描述的行为类似的行为,并将范围设置为 10000 的倍数。但是,这会导致某些系统帐户和组出现问题,这些帐户和组在某些平台上受影响的 UID 和 GID 高于 65000(例如 Debian 及其衍生品)。因此,默认范围 65536 已被强制执行,并产生了您知道的副作用。

因此,为了获得更多人类可读的范围,您可以在文件中显式设置以下值/etc/login.defs

SUB_UID_MIN   100000
SUB_UID_MAX   600100000
SUB_UID_COUNT 100000
SUB_GID_MIN   100000
SUB_GID_MAX   600100000
SUB_GID_COUNT 100000
Run Code Online (Sandbox Code Playgroud)

顺便说一句,文件/etc/subuid确实/etc/subgid可以手动编辑,但要确保范围不重叠,并且确保不会干扰任何进程、文件或任何其他对象所有权。换句话说,虽然在实际使用该系列之前这样做是安全的,但之后就需要一些特别的小心。