O comentário de jopasserat leva a outra possível resposta.
O comando groups
não relata membros do grupo de um usuário. Ele relata os privilégios de ID do grupo do processo atual. Ele usa apenas o NSS para converter IDs de grupos numéricos em nomes.
Quando um usuário efetua login, as participações no grupo são obtidas do NSS, e as chamadas do sistema setgid
e setgroups
são usadas para fornecer os privilégios corretos ao processo inicial do usuário. Todos os processos descendentes de lá herdam os mesmos privilégios (exceto quando um programa set-id é executado).
Se os privilégios configurados forem alterados, enquanto o usuário estiver conectado, os processos existentes não serão afetados. Você tem que sair e entrar novamente para obter privilégios, e se você está tentando revogar privilégios, você tem que matar todos os processos do usuário para terminar o trabalho.
nscd
e tais podem adicionar camadas extras de cache para se preocupar, mas processos de usuário pré-existentes são efetivamente um cache de privilégios que está presente em todas configurações.