![Não é mais possível adicionar usuários usando useradd](https://rvso.com/image/76429/N%C3%A3o%20%C3%A9%20mais%20poss%C3%ADvel%20adicionar%20usu%C3%A1rios%20usando%20useradd.png)
Sempre que eu faço
# useradd -N --gid 1003 -s /bin/ksh --uid <some UID starting with 10027> --home /home/<someuser> <someuser>
useradd apenas se recusa a adicionar qualquer usuário e imprime:
useradd: Can't get unique secondary UID range
useradd: can't find subordinate user range
E só para dizer, /etc/passwd
tem 9.056 linhas.
Qual poderia ser o problema?
Responder1
Conformeadição de usuário(8), ele cria um intervalo uid secundário SUB_UID_COUNT reservado para cada usuário
SUB_UID_MIN
(número),SUB_UID_MAX
(número),SUB_UID_COUNT
(número)Se
/etc/subuid
existir, os comandosuseradd
enewusers
(a menos que o usuário já tenha IDs de usuários subordinados) alocarãoSUB_UID_COUNT
IDs de usuários não utilizados do intervaloSUB_UID_MIN
paraSUB_UID_MAX
para cada novo usuário.Os valores padrão para
SUB_UID_MIN
,SUB_UID_MAX
,SUB_UID_COUNT
são respectivamente 100.000, 600100000 e 10.000.
Parece que você atingiu esse limite padrão e, portanto, useradd
está falhando.
Responder2
useradd
está reclamando que não pode alocar um intervalo de UID subordinado para o novo usuário porque o intervalo de UID permitido está esgotado. Como você indicou, você tem muitos usuários em seu sistema e os valores padrão configurados login.defs
não conseguem lidar com isso.
Arquivos UID/GID subordinados são usados para configurar mapeamentos UID/GID para namespaces de usuário (consultesubuid(5)
,subgid(5)
,newuidmap(1)
, e newgidmap(1)
).
No meu caso, eu tinha mais de 10.000 UIDs em meu sistema e useradd
estava falhando exatamente com o mesmo erro. Eu não queria useradd
gerenciar os bancos de dados subuid
e subgid
porque não preciso configurar nenhum mapeamento de ID personalizado, então desativei esse recurso. Isso pode ser feito removendo os arquivos /etc/subuid
e /etc/subgid
.
Para versões recentes de utilitários shadow (desde 4.9ou então), configuração SUB_UID_COUNT 0
e SUB_GID_COUNT 0
no seu /etc/login.defs
também funciona. Verlogin.defs(5)
para detalhes.