A chave no banco de dados do usuário, /etc/passwd
ou qualquer outra coisa, é o nome de login: é tudo o que você fornece para se identificar ao efetuar login. A partir dessa chave, um programa pode recuperar todas as outras informações armazenadas. banco de dados do usuário; isso acontece sem levar em conta qualquer outro usuário no banco de dados do usuário, até mesmo outros usuários com o mesmo ID de usuário. (Normalmente, isso é feito com getpwnam
ou getpwnam_r
, diretamente ou via PAM.
Assim, o nome de login leva à senha armazenada, o ID do usuário, o ID do grupo (principal), as informações do GECOS, o diretório inicial e o shell. Isso significa que dois usuários podem compartilhar o mesmo ID de usuário e ainda ter diretórios de usuário e shells diferentes! (Isso era comumente usado no passado para fornecer um shell fall-back vinculado estaticamente para raiz; você teria o usuário usual root
com id 0 e shell /bin/bash
ou qualquer outro, e outro usuário, digamos sashroot
, com id 0 e um shell diferente.)
Daí a resposta para
does the group ID field depend on user name or on user ID?
é que depende apenas do nome do usuário.
A chave no banco de dados do grupo também é o nome do grupo. A partir dessa chave, um programa pode recuperar todas as outras informações armazenadas no banco de dados do grupo; novamente isso acontece sem nenhum respeito por nenhum outro grupo no banco de dados do grupo. (Ao determinar os grupos secundários de um usuário, o processo é mais complexo do que ler o banco de dados do usuário: não há função para listar grupos aos quais um determinado usuário pertence, então isso é feito tipicamente em um loop envolvendo getgrent
e endgrent
.)
Assim, o nome do grupo leva à senha do grupo, ao ID do grupo e à lista de membros do grupo, que é uma lista de nomes de usuários. Para criar um conjunto de grupos secundários de um usuário, todos os grupos são enumerados e o nome de login do usuário é correspondido aos membros do grupo. Portanto, não apenas dois usuários diferentes com o mesmo ID de usuário podem ter grupos primários diferentes, eles podem pertencer a um conjunto diferente de grupos secundários!
Daí a resposta para
In other words, can different usernames for the same user ID have different group IDs, or must all the usernames for the same user ID have the same group ID?
é que os grupos de um usuário dependem apenas do nome do usuário, e nomes de usuário diferentes podem compartilhar um ID do usuário e ainda ter grupos primários e secundários diferentes.