O Linux mantém um cache de membros de grupos se estiver no LDAP? (Diferença entre grupos vs grupo getent))

3

Nossa configuração LDAP de usuários e grupos está funcionando.

Nosso servidor está usando o LDAP para armazenar usuários e grupos.

# /etc/nsswitch.conf :
passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

Mas hoje adicionamos um novo grupo ao LDAP, com três usuários, e adicionamos outros usuários. Os 3 usuários estão no grupo, mas não nos outros.

Podemos ver isso usando os "grupos": mais precisamente, "getent group GROUPNAME" mostra o usuário no grupo enquanto "groups" não mostra o grupo para esse usuário ...?!

Portanto, estou tentando entender:

  • Existe algum tipo de cache para grupos - lista LDAP?
  • Ou é possível que a sincronização falhe, se sim como reiniciá-la manualmente?

Desculpe não ser mais preciso na minha pergunta, mas eu realmente não vejo por onde começar ...

S. Arquivos de configuração

# /etc/ldap/ldap.conf
URI     ldap://172.16.1.232
TLS_CACERT      /etc/ssl/certs/ca-certificates.crt


# /etc/pam_ldap.conf
base dc=ourdomain,dc=ch
uri ldap://172.16.1.232/
ldap_version 3
rootbinddn cn=admin,dc=ourdomain,dc=ch
pam_password crypt
    
por db_ch 02.02.2017 / 12:43

2 respostas

13

pam_ldap e nsswitch não possuem mecanismos de armazenamento em cache, mas nscd ou sssd podem estar presentes em seu sistema que implementam o cache.

Para invalidar / liberar o uso do cache de grupos nscd :

sudo nscd --invalidate=group

Para invalidar / liberar o uso do cache de grupos sssd :

sudo sss_cache -G
    
por 02.02.2017 / 12:51
1

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.

    
por 02.02.2017 / 17:29