LDAP não irá atualizar se existir dados em cache
-
22-07-2019 - |
Pergunta
Temos um cliente de SELinux que os usuários da rede autentica usando LDAP se conectar a um servidor do Active Directory. Desde as nossas máquinas têm que operar "untethered," nós temos que usar nscd para grupo de cache e informações passwd.
Eis a questão. Se alterar as informações de grupo no servidor Active Directory, em seguida, faça o login no cliente, se existe um cache para esse usuário, LDAP parece ignorar o servidor e só usar os dados em cache. A única maneira que temos sido capazes de obter uma atualização é invalidar o cache passwd.
parcela significativa de /etc/nsswitch.conf:
passwd: file ldap cache group: file ldap cache shadow: file ldap cache
Graças.
Update:. Descobri correndo strace getent passwd
que o cache nscd checado antes /etc/nsswitch.conf é lido, então a configuração do nss não importa ??p>
Update 2: Jogando com nss_updatedb hoje para ver se ele vai funcionar. Até agora, nenhuma alegria, embora Este COMO FAZER parece exatamente o que precisamos fazer.
Solução 2
Nós finalmente resolvido isso usando nss_updatedb para armazenar em cache o grupo e bases de dados passwd localmente. Nós, então, desligado nscd.
Nós adicionamos o módulo pam_exec ao pam.d lista e usá-lo para executar nss_updatedb antes da autenticação para garantir que o cache local é até à data.
Outras dicas
Se você não quer resultados de cache de diretório ativo, então você precisa se quer desligar nscd ou definir o seu tempo de vida de cache para alguns minutos (edit /etc/nscd.conf). Eu acredito que o tempo padrão para ao vivo é de 10 minutos para passwd e e hora para o grupo.
Você pode armazenar em cache nscd facilmente alinhada com os seguintes comandos:
sudo nscd -i passwd
sudo nscd -i group
Depois de limpeza de cache nscd com comandos dados você veria dados LDAP alterados.
Para mais detalhes veja: http://sysadmin-notepad.blogspot.rs/2013/05/how-to-flush-nscd-cache-in-linux.html