BTW - esta pergunta / resposta foi atualizada para os sistemas operacionais atuais.
Citação de redhat: gerenciamento de atribuições exclusivas de UID e número de GID , descreve o uso de UID e GID e seu gerenciamento e como geradores (servidores de ID)
must generate random UID and GID values and simultaneously ensure that
replicas never generate the same UID or GID value. The need for unique
UID and GID numbers might even cross IdM domains, if a single
organization has multiple disparate domains.
Da mesma forma, os utilitários que permitem acesso ao sistema podem se comportar de forma imprevisível (mesma referência):
If two entries are assigned the same ID number, only the first entry
is returned in a search for that number.
O problema surge quando o conceito de "primeiro" é mal definido. Dependendo do serviço instalado, os nomes de usuário podem ser mantidos em um hash de tamanho variável que retorne um nome de usuário diferente com base em fatores inconsistentes. (Eu sei que isso é verdade, já que algumas vezes eu tentei usar 2 nomes de usuários com um ID, um sendo um nome de usuário local, e o outro sendo um domain.username que eu queria mapear para o UID uma maneira completamente diferente), mas eu poderia logar com "usera", fazer um "who" ou "id" e ver "userb" ou "usera" - aleatoriamente.
Há uma interface para recuperar vários valores de UIDs de um grupo (grupos com um único GID são projetados para serem associados a vários UIDs), mas não há uma interface portátil para retornar uma lista de nomes para um UID. Esperar o mesmo ou semelhante comportamento entre sistemas ou mesmo aplicativos no mesmo sistema pode ser infeliz surpresa.
No Sol (agora oracle) yp (páginas amarelas) ou NIS (NetworkInformationServices), há também muitas referências a requisitos de exclusividade. Funções especiais e servidores são configurados
para alocar IDs exclusivas em vários servidores e domínios (por exemplo, uid_allocd, gid_allocd - manpage de daemons do alocador de UID e GID
Uma terceira fonte que se pode verificar é a documentação do servidor da Microsoft para o Mapeamento de Contas NFS. O NFS é um protocolo de compartilhamento de arquivos unix e descreve como as permissões e o acesso aos arquivos são mantidos pelo ID. Lá eles escrevem:
-
UID. Este é um inteiro não assinado usado pelos sistemas operacionais UNIX para
identificar usuários e deve ser exclusivo no arquivo passwd.
-
GID. Este é um inteiro não assinado usado pelo kernel do UNIX para identificar
grupos e deve ser exclusivo no arquivo de grupo. gerenciamento MS-NFS
página
Embora alguns sistemas operacionais possam ter permitido vários nomes / UIDs (derivados do BSD, talvez?), a maioria dos sistemas operacionais depende do fato de serem únicos e podem se comportar de maneira imprevisível quando não são.
Nota - Estou adicionando esta página, como alguém se referiu a esta entrada datada como suporte para utilitários modernos para acomodar UID / GIDs não exclusivos ... que a maioria, não.