![無法再使用 useradd 新增用戶](https://rvso.com/image/76429/%E7%84%A1%E6%B3%95%E5%86%8D%E4%BD%BF%E7%94%A8%20useradd%20%E6%96%B0%E5%A2%9E%E7%94%A8%E6%88%B6.png)
每當我這樣做時
# 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_MIN
SUB_UID_MAX
SUB_UID_MIN
、SUB_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
管理subuid
和subgid
資料庫,因為我不需要配置任何自訂 ID 映射,因此我停用了此功能。這可以透過刪除/etc/subuid
和檔案來完成/etc/subgid
。
對於最新版本的影子實用程式(自 4.9或者),設定SUB_UID_COUNT 0
和 SUB_GID_COUNT 0
在你的/etc/login.defs
也有效。看login.defs(5)
了解詳情。