Para o kernel, um usuário ou um grupo são apenas um número (o UID e o GID) anexado a um processo e que são usados para ver se o processo é permitido, por ex. leia (realmente aberto (2)) um arquivo (arquivos carregam UID / GID e bits de permissão ao redor para este propósito), e também outras operações (por exemplo, processos podem manipular processos pertencentes ao mesmo UID). Existem chamadas do sistema para alterar o UID / GID do processo de chamada (setuid (2) / setgid (2) e amigos). Obviamente, há severas restrições sobre quem pode usá-las.
O sistema pode usar os números para procurar nomes em / etc / passwd, / etc / group ou uma série de outros mecanismos (LDAP, NIS, outros), mas isso é estritamente para consumo humano.
Quando você efetua login e atribui seu nome de usuário, um programa (executado como root e assim permitido fazer muitas coisas que usuários normais não são permitidos) pega o nome de usuário e pesquisa o UID (para ver se esse usuário existe em primeiro lugar), pede a senha (ou alguma outra autenticação) e a verifica. Se tudo correr bem, o programa muda para esse UID / GID e exec (2) é o shell do usuário (que, novamente, é apenas um programa comum, exatamente qual deles iniciar é parte da descrição da conta do usuário) .