cache di authentication sssd e ldap

Nella nostra casella che esegue OpenSUSE 12.2 abbiamo installato il daemon OpenLDAP e sssd . Stiamo utilizzando questi due servizi per l'authentication degli utenti. Recentemente abbiamo creato uno script che crea nuovi utenti web per i nostri vhost in modo dinamico, ma ora abbiamo a che fare con un problema.

Sembra che sssd utilizza una sorta di cache e durante il getent passwd restituisce gli utenti che sono stati eliminati da LDAP. A volte non restituisce immediatamente l'utente appena creato in quanto è necessario ulteriormente nello script (per impostare le autorizzazioni con setfacl e chown ).

Il riavvio di LDAP, sssd o nscd non aiuta né la cache di flushing con sss_cache -U . Abbiamo provato abbassando la cache nella configuration di sssd ma sembra che non influenza niente.

Dobbiamo in qualche modo aggiornare esattamente la cache dopo aver aggiunto un nuovo utente a LDAP o distriggersto la cache.

Qualcuno ha vissuto problemi simili?

  • Come integrare Active Directory con FreeBSD 10.0 utilizzando security / sssd?
  • Autenticazione SSSD
  • rpm2cpio salta i file da RPM
  • vsFTPd authentication con SSSD
  • Integrazione AD di Linux, imansible eseguire l'accesso quando si utilizza Windows Server 2012 DC
  • SSSD rifiuta l'accesso LDAP con su: password errata
  • Autenticazione LDAP - evitare duplicati uidNumber
  • CentOS 6 + LDAP + NFS. La properties; dei file è bloccata su "nessuno"
  • 5 Solutions collect form web for “cache di authentication sssd e ldap”

    Dalla pagina 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 

    Vorrei inserire qualcosa come:

     [nss] enum_cache_timeout 10 

    (regola i secondi come sembra opportuno)

    • Non è ansible distriggersre completamente la cache con sssd.

    • È ansible distriggersre completamente sss come provider di authentication e solo richiedere LDAP direttamente se è quello che vuoi.

    Ad esempio, in /etc/nsswitch.conf , modifica le righe come:

     passwd: files sss 

    a

     passwd: files ldap 
    • È ansible forzare la pulizia della cache rimuovendo /var/lib/sss/db/*

    Ho espiantato problemi simili

    Ho notato che getent passwd | grep <username> getent passwd | grep <username> e getent passwd <username> non restituiranno gli stessi risultati,

    Usando strace ho scoperto che getent passwd <username> controlla i dati in "/var/lib/sss/mc/passwd"

    getent passwd | grep <username> getent passwd | grep <username> si connette a /var/lib/sss/pipes/nss e otterrà i dati da esso.

    Questo mi sta davvero confondendo, dato che entrambi gli approcci sembrano colpire diverse cache. Queste cache sembrano aggiornate quando sudo su - <username> ma sembrano altrimenti valide per ore.

    Il risultato in pratica è che, ad esempio, l'accesso di ssh non funziona per un utente pochi minuti dopo che viene rimosso dal ldap, ma getent passwd continuerà a mostrarlo per ore, quindi è difficile verificare se questi utenti sono in fatto rimosso o less (senza eliminare manualmente tutte le cache)

    Si potrebbe tentare di distriggersre le credenziali di cache aggiungendo la direttiva a /etc/sssd/sssd.conf:

     [domain/default] cache_credentials = False 

    È quindi ansible verificare che sssd utilizza la cache nelle credenziali con il command console:

     # authconfig --test|grep credential credential caching in SSSD is disabled 

    Provare sss_cache -E

    o provare ad arrestare sssd, rimuovere i file in / var / lib / sss / db / * e riavviare sssd

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.