sssd e cache de autenticação ldap

7

Em nossa caixa com o OpenSUSE 12.2, instalamos o OpenLDAP e o sssd daemon. Estamos usando esses dois serviços para autenticação do usuário. Recentemente, criamos um script que cria novos usuários da web para nossos vhosts dinamicamente, mas agora estamos lidando com um problema.

Parece que o sssd usa algum tipo de cache e, durante getent passwd , ele retorna usuários que foram excluídos do LDAP. Às vezes, ele não retorna o usuário recém-criado imediatamente, pois isso é necessário no script (para definir permissões com setfacl e chown ).

Reiniciar o LDAP, sssd ou nscd não ajuda nem limpar o cache com sss_cache -U . Tentamos reduzir o cache na configuração de sssd , mas parece que isso não afeta nada.

Precisamos de alguma forma atualizar explicitamente o cache depois de adicionar um novo usuário ao LDAP ou desativar o cache.

Alguém já teve problemas semelhantes?

    
por Seth Rayer 09.05.2013 / 22:20

5 respostas

4

Da página man (sssd.conf):

NSS configuration options
       These options can be used to configure the Name Service Switch (NSS)
       service.

       enum_cache_timeout (integer)
           How many seconds should nss_sss cache enumerations (requests for
           info about all users)
       Default: 120

Eu inseriria algo como:

[nss]
enum_cache_timeout 10

(ajuste os segundos conforme parecer adequado)

    
por 18.11.2015 / 13:05
1
  • Você não pode desativar o cache completamente com o sssd.

  • Você pode desabilitar o sss como um provedor de autenticação completamente e apenas consultar o LDAP diretamente, se é isso que você quer.

Por exemplo, em /etc/nsswitch.conf , altere linhas como:

passwd:     files sss

para

passwd:     files ldap
  • Você pode forçar a limpeza do cache removendo /var/lib/sss/db/*
por 09.05.2013 / 22:47
1

Você pode tentar desativar as credenciais de cache adicionando a diretiva ao /etc/sssd/sssd.conf:

[domain/default]
cache_credentials = False

Você pode então verificar se o sssd usa cache em credenciais com o comando console:

# authconfig --test|grep credential
credential caching in SSSD is disabled
    
por 14.05.2013 / 07:03
1

Eu expierencei problemas semelhantes

notei que getent passwd | grep <username> e getent passwd <username> não retornará os mesmos resultados,

Usando strace, descobri que getent passwd <username> verifica dados em "/var/lib/sss/mc/passwd"

wheras getent passwd | grep <username> se conectará a /var/lib/sss/pipes/nss e obterá seus dados de lá.

Isso está realmente me confundindo, já que ambas as abordagens parecem atingir diferentes caches. Esses caches parecem ser atualizados quando eu executo sudo su - <username> , mas parecem ser válidos por horas.

O resultado na prática é que, e. o acesso ssh não funcionará para um usuário alguns minutos depois que ele for removido do ldap, mas getent passwd continuará mostrando isso por horas, então é difícil para mim verificar se esses usuários são de fato removidos ou não (sem limpar alguns caches manualmente o tempo todo)

    
por 24.10.2016 / 16:35
1

Experimente sss_cache -E

ou tente parar o sssd, removendo os arquivos em / var / lib / sss / db / * e reiniciando o sssd

    
por 17.05.2017 / 22:37