Onde a chamada do sistema getgroups para Linux obtém dados de

1

Estou depurando um problema em que, quando efetuo login, recebo um erro cannot find name for group ID 387 . Estou tentando descobrir o que esse grupo deve ser e por que meu usuário está associado a ele.

Usando strace , descobri que getgroups é chamado quando eu começo o bash e ele retorna

getgroups(6, [20, 106, 387, 513, 2385, 2447]) = 6

Quando eu olhei para /etc/group eu não encontrei um grupo 387. Mas a minha pergunta é por que getgroups teria retornado esse número em primeiro lugar.

Estou usando o Ubuntu 12.04, mas faço login com o LDAP. Quando faço login em uma máquina diferente com a mesma conta, recebo uma lista diferente de números ( getgroups(7, [106, 513, 515, 516, 519, 520, 2503]) = 7 ).

Estou pensando qual é a origem das informações que getgroups queries. Eu estou supondo que o meu problema é uma incompatibilidade entre grupos locais e LDAP, mas não tenho certeza de como tudo isso funciona.

    
por Gabriel Southern 16.11.2013 / 19:55

1 resposta

1

As diferentes fontes de informação e sua prioridade são definidas no arquivo de configuração /etc/nssswitch.conf . Esses arquivos de configuração listam quais módulos NSS devem ser usados quando funções como getgroups() ou getpwent() e outras são usadas.

Sua postagem sugere que seu sistema use um diretório LDAP como uma fonte para usuários e grupos, portanto, os grupos que você vê provavelmente vêm do módulo libnss_ldap . Dependendo da configuração de /etc/nsswitch.conf , os grupos definidos localmente podem substituir o que os módulos LDAP NSS retornam. Os módulos LDAP NSS também podem ser configurados diferentemente entre seus dois hosts.

    
por 16.11.2013 / 20:14

Tags