无法再使用 useradd 添加用户

无法再使用 useradd 添加用户

每当我这样做时

# useradd -N --gid 1003 -s /bin/ksh --uid <some UID starting with 10027> --home /home/<someuser> <someuser>

useradd 只是拒绝添加任何用户并打印:

useradd: Can't get unique secondary UID range
useradd: can't find subordinate user range

只是告诉你,它/etc/passwd有 9056 行长。

可能是什么问题呢?

答案1

按照用户添加(8),它创建为每个用户保留的 SUB_UID_COUNT 个辅助 uid 范围

SUB_UID_MIN(数字),  SUB_UID_MAX(数字),  SUB_UID_COUNT(数字)

    如果/etc/subuid存在,命令useradd和 newusers (除非用户已经有从属用户 ID)为每个新用户分配范围 内SUB_UID_COUNT未使用的用户 ID 。SUB_UID_MINSUB_UID_MAX

    SUB_UID_MINSUB_UID_MAX、的默认值SUB_UID_COUNT分别为 100000、600100000 和 10000。

看起来您已达到默认限制,因此useradd失败。

答案2

useradd抱怨它无法为新用户分配从属 UID 范围,因为允许的 UID 范围已用完。正如您所指出的,您的系统中有很多用户,并且配置的默认值无法login.defs处理。

从属 UID/GID 文件用于为用户命名空间设置 UID/GID 映射(请参阅subuid(5),subgid(5),newuidmap(1), 和 newgidmap(1) )。

就我而言,我的系统中有 10000 多个 UID,并且  useradd失败并出现完全相同的错误。我不想useradd管理subuidsubgid数据库,因为我不需要配置任何自定义 ID 映射,因此我禁用了此功能。这可以通过删除/etc/subuid和文件来完成/etc/subgid

对于最新版本的影子实用程序(自 4.9或者),设置SUB_UID_COUNT 0和 SUB_GID_COUNT 0 在你的/etc/login.defs也有效。看login.defs(5)了解详情。

相关内容