![useradd を使用してユーザーを追加できなくなりました](https://rvso.com/image/76429/useradd%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F.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
まったく同じエラーで失敗していました。カスタム ID マッピングを構成する必要がないため、およびデータベースをuseradd
管理したくなかったので、この機能を無効にしました。これは、およびファイルを削除すると実行できます。subuid
subgid
/etc/subuid
/etc/subgid
シャドウユーティリティの最新バージョン(4.9以降)とか、ぐらい)、設定SUB_UID_COUNT 0
、 SUB_GID_COUNT 0
および/etc/login.defs
でも動作します。login.defs(5)
詳細については。