Os grupos são herdados por um processo de seu pai. Bash não tem escolha no assunto. Um processo executado como root pode obter novos grupos suplementares mediante solicitação; um processo que não está em execução como root só pode abandonar grupos suplementares.
O comando groups sem argumentos retorna sua própria lista de grupos (que é herdada de seus pais): grupo real, grupo efetivo e grupos suplementares. O comando group SOMEUSER pesquisa os grupos associados a SOMEUSER nos bancos de dados de usuários e grupos.
Ao efetuar login, os grupos são atribuídos com base nos bancos de dados do usuário e do grupo, como parte do processo de login, antes que o processo de login alterne da raiz para o usuário de destino. Os comandos newgrp , su e sg são capazes de adquirir grupos extras enquanto está em execução porque é setuid raiz; o código deles é escrito de tal forma que eles só concedem grupos que o usuário receberia ao efetuar login (exceto que o root pode obter o grupo que quiser).
No kernel do Linux, os UIDs e GIDs de um processo são registrados em um struct cred . Os grupos suplementares estão no campo group_info , que aponta para um struct group_info que contém uma matriz de IDs de grupo.