Naturalmente, o quebra-cabeça fundamental aqui é que as verificações de permissão do sistema de arquivos são baseadas na combinação de (o UID efetivo e) o GID efetivo e os GIDs suplementares. Portanto, do ponto de vista das verificações de permissões de arquivo, o GID efetivo é equivalente aos GIDs suplementares, o que leva à pergunta do OP. (De passagem: se estamos falando de Linux, na verdade é o UID / GID do sistema de arquivos que é usado nas verificações de permissões do sistema de arquivos, em vez do UID e GID efetivo, mas os IDs anteriores quase sempre têm os mesmos valores dos últimos IDs. )
Portanto, deve haver alguns casos em que os GIDs reais / efetivos / salvos não são equivalentes aos GIDs suplementares. (Agrupar os GIDs reais / efetivos / salvos em conjunto, porque as regras normais de permissão * gid () definem que um processo sem privilégios pode alterar qualquer um desses GIDs para o mesmo valor que um dos outros dois.)
E, de fato, existem alguns casos desse tipo. access (2) faz suas verificações com base no ID do usuário e no ID do grupo real . Se um usuário não privilegiado foi capaz de alterar o ID do grupo real para ser o mesmo que um dos GIDs suplementares que não é o GID do conjunto efetivo ou salvo, o comportamento do acesso (2) poderia ser manipulado.
Existem outros casos desse tipo. Veja a página do manual mkdir (2) do Linux, por exemplo. Dependendo se o bit de modo set-GID estiver definido no diretório pai, um novo arquivo criado no diretório assumirá a propriedade de grupo do GID efetivo do processo de criação. Novamente, se um processo não privilegiado puder alterar seu GID efetivo para ser o mesmo que um de seus GIDs suplementares, ele poderá manipular a propriedade do grupo de novos arquivos de maneiras inesperadas. Comentários semelhantes aplicam-se ao mknod (2) e ao System V IPC chama semget (2), shmget (2) e msgget (2).
Existem também alguns casos específicos do Linux em que os GIDs reais / efetivos / salvos não são equivalentes aos GIDs suplementares. Veja process_vm_readv (2) e prlimit (2), por exemplo.