Alguma preocupação em usar números UID altos (3000+) no RHEL5 +?

4

Os sistemas legados têm números UID até os anos 2000 baixos. Ao implementar um novo sistema de gerenciamento de usuários, estou procurando opções para evitar colisões de UID.

Uma opção é apenas ter uma lista de UIDs que não podem ser reatribuídos. Atualmente estou olhando para isso.

Outra opção muito mais fácil seria usar um intervalo maior (3000+). Quaisquer preocupações que eu deveria ter em mente?

Isso seria no RHEL5, RHEL6 e RHEL7.

    
por Belmin Fernandez 21.03.2015 / 20:02

2 respostas

4

Todos os sistemas Unix possuem pelo menos IDs de usuário de 16 bits, que podem obter valores de 0 (reservado para raiz) a 65535 (reservado como um valor inválido). Muitos tipos modernos (incluindo Linux) suportam valores maiores, mas em uma rede mista, você deve evitá-los a menos que tenha certeza de que todos os sistemas operacionais, sistemas de arquivos e protocolos de rede os suportam (por exemplo, versões mais antigas do NFS não). Há uma convenção geral no mundo Unix de que valores “pequenos” são para o sistema e valores “grandes” são para o administrador. "Pequeno" e "grande" não são definidos com precisão; o limite é geralmente 100, 1000 ou algum lugar intermediário. Além disso, o 65534 é por convenção o usuário nobody , que não possui nenhum arquivo e não executa nenhum serviço do sistema (ele é usado para tarefas que não devem ter privilégios, como locate implementações que indexam somente o mundo arquivos).

O resultado é que qualquer valor entre 1000 e 65533 é seguro. Isso vale também para IDs de grupo.

Nas redes, é comum usar uma parte baixa desse intervalo para contas específicas de máquina e uma parte alta para contas de toda a rede. Se várias autoridades criarem contas de usuário, elas poderão usar intervalos diferentes, por exemplo, 10000-19999 e 20000-29999. No seu caso, não há problema em decidir que, digamos, o intervalo 1000-2999 é para o sistema legado e 3000-4999 é para o novo sistema. Ou que 1000-9999 é para o sistema legado e 10000-19999 para o novo sistema.

    
por 21.03.2015 / 21:27
2

O kernel Linux 2.6 e superior suporta inteiros de 32 bits não assinados como UIDs e GIDs. Isso significa que o UID máximo deve ser 4294967294 (4294967295 é reservado) para RHEL4 +, mas pode depender das configurações do sistema e utilitários instalados, especificamente shadow-utils. Você pode testá-lo tentando um UID grande, a única coisa que aconteceria é que ele será rejeitado (tente qualquer coisa entre 65536 e 4294967294 no RHEL5). No RHEL6, qualquer coisa acima de 4294967294 será rejeitada:

# useradd -u 4294967295 test
useradd: invalid user ID '4294967295'

O RHEL6 e o RHEL7 definitivamente suportam 32 bits com seus utilitários. Não posso falar pelo RHEL5 porque não tenho caixas que ainda estejam no RHEL5.

Portanto, se seu objetivo é evitar possíveis conflitos, você pode querer começar com algo como 100000.

Apenas informações extras: Com os lançamentos de kernel mais recentes, o uso de 4 bilhões de UIDs não é tão improvável devido aos namespaces de usuário e aos contêineres não privilegiados (docker de referência, openvz e lxc). Até onde sei, o RHEL ainda não suporta namespaces de usuários, mas eles anunciaram que planejavam fazê-lo com o RHEL7, então imagino que ele será portado em breve.

    
por 21.03.2015 / 22:54

Tags