Il problema
L'id Il comando mostra UID e GID diversi su server sssd diversi per lo stesso utente di Windows Active Directory. Dopo aver eliminato la cache sssd da sss_cache, l'UID e il GID sono ancora diversi.
1. Output da un server:
# id ad_test_user uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_group2),[GID](ad_test_group)
# sss_cache -u ad_test_user
# id ad_test_user uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_group2),[GID](ad_test_group)
2. Output da un altro server:
# id ad_test_user uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_groups),[GID](ad_test_group3),[GID](ad_test_group4),[GID](ad_test_group5), [GID](ad_test_group2),[GID](ad_test_group)
# sss_cache -u ad_test_user
# id ad_test_user uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_groups),[GID](ad_test_group3),[GID](ad_test_group4),[GID](ad_test_group5), [GID](ad_test_group2),[GID](ad_test_group)
Possibili impatti sul server Linux:l'utente AD non può accedere a Linux
# su - ad_test_user Last login: Fri Sep 11 11:11:11 COT 2015 from 10.10.xx.xx on pts/1 Last failed login: Tue Mar 13 13:13:13 COT 2015 from 10.10.10.2 on ssh:hostname There were 1 failed login attempts since the last successful login. su: warning: cannot change directory to /home/ad_test_user: Permission denied id: cannot find name for group ID [GID] -bash: /home/ad_test_user/.bash_profile: Permission denied -bash-4.2$
La soluzione
L'UID e il GID dell'utente Linux provengono da Windows AD SID. L'sssd non lo cambierà. La funzione di mappatura ID consente a sssd di agire come client di Active Directory senza richiedere agli amministratori di estendere gli attributi utente per supportare gli attributi POSIX per gli identificatori di utenti e gruppi.
Active Directory fornisce un objectSID per ogni utente e oggetto gruppo nella directory. Questo objectSID può essere suddiviso in componenti che rappresentano l'identità del dominio di Active Directory e il relativo identificatore (RID) dell'utente o dell'oggetto gruppo. L'algoritmo di mappatura ID sssd prende una gamma di UID disponibili e la divide in sezioni di componenti di dimensioni uguali, denominate "slice “-. Ciascuna sezione rappresenta lo spazio disponibile per un dominio Active Directory.
Quando si incontra per la prima volta un utente o una voce di gruppo per un particolare dominio, sssd(8) alloca una delle sezioni disponibili per quel dominio. Per rendere ripetibile questa assegnazione della sezione su diverse macchine client, viene utilizzato il seguente algoritmo:la stringa SID viene passata attraverso l'algoritmo murmurhash3 per convertirla in un valore hash a 32 bit. Quindi prendi il modulo di questo valore con il numero totale di fette disponibili per prelevare la sezione.
Nota :È possibile incontrare collisioni nell'hash e nel modulo successivo. In queste situazioni, viene utilizzata la successiva fetta disponibile, ma potrebbe non essere possibile riprodurre lo stesso esatto insieme di fette su altre macchine poiché l'ordine in cui vengono incontrate determinerà la loro fetta. In questa situazione, si consiglia di passare all'utilizzo di attributi POSIX espliciti in Active Directory (disabilitando la mappatura ID) o di configurare un dominio predefinito per garantire che almeno uno sia sempre coerente. Vedere "Configurazione" per i dettagli.Quando la mappatura ID è abilitata in sssd(8), gli attributi uidNumber e gidNumber vengono ignorati. Questo per evitare la possibilità di conflitti tra i valori assegnati automaticamente e quelli assegnati manualmente. Se è necessario utilizzare valori assegnati manualmente, TUTTI i valori devono essere assegnati manualmente.
Nota :la modifica delle opzioni di configurazione relative alla mappatura ID comporterà la modifica degli ID utente e gruppo. Al momento, sssd(8) non supporta la modifica degli ID, quindi il database sssd deve essere rimosso. Poiché anche le password memorizzate nella cache sono archiviate nel database, la rimozione del database deve essere eseguita solo mentre i server di autenticazione sono raggiungibili, altrimenti gli utenti potrebbero rimanere bloccati. Per memorizzare nella cache la password, è necessario eseguire un'autenticazione.Il sssd.conf il file sui client Linux dovrebbe essere coerente. Soprattutto i seguenti due parametri devono essere coerenti in tutto sssd.conf perché influenzano l'algoritmo di mappatura ID sssd:
1. ldap_idmap_default_domain_sid (stringa)
Specificare il SID del dominio predefinito. Ciò garantirà che questo dominio sarà sempre assegnato allo slice zero nella mappa ID, bypassando l'algoritmo murmurhash descritto sopra.
Predefinito:non impostato
2. ldap_idmap_default_domain (stringa)
Specifica il nome del dominio predefinito.
Predefinito:non impostato