Das Problem
Beim Ausführen des Befehls „id“ für LDAP-Benutzer wird nur die gid für einige sekundäre Gruppen angezeigt und der Gruppenname wird nicht gedruckt:
# id user1 uid=48254(user1) gid=100(users) groups=100(users),5002(group1),5001(group2),41257(group3),856(group4),56971
Und der folgende Fehler wurde in /var/log/sssd/sssd_nss.log protokolliert:
(Tue Mar 14 05:40:09 2020) [sssd[nss]] [nss_cmd_getgrgid_search] (0x0010): getgrgid call returned more than one result !?!
Die Lösung
Die neue Gruppe wurde mit derselben GID wie die der bestehenden hinzugefügt.
# id user1 uid=48254(user1) gid=100(users) groups=100(users),5002(group1),5001(group2),41257(group3),856(group4),56971(group6) # getent group group5 group5:*:56971: # id user1 uid=48254(user1) gid=100(users) groups=100(users),5002(group1),5001(group2),41257(group3),856(group4)
Dieselbe ID wird 2 Gruppen zugeordnet, Gruppe5 und Gruppe6. Wenn wir dies also einmal tun, erhalten wir ein korrektes Ergebnis für den Benutzer (alle Benutzergruppen werden angezeigt). Dann führen wir getent group für die andere Gruppe aus:
# getent group group5
Aber danach scheint die Gruppe aus den ID-Ergebnissen gelöscht zu werden.
SSSD hat eine harte Einschränkung in der SysDB, dass nur eine Gruppe mit einer bestimmten ID existieren kann. Wenn eine Gruppe auf dem Server umbenannt wird, wird es zu einer Frage der Arbeitsreihenfolge, ob wir damit richtig umgehen oder nicht. Wir unterstützen nicht mehrere Einträge mit derselben GID und dies führt zu unerwartetem Verhalten.
Der folgende Fehler wurde also in /var/log/sssd/sssd_nss.log protokolliert:
(Tue Mar 14 05:40:09 2020) [sssd[nss]] [nss_cmd_getgrgid_search] (0x0010): getgrgid call returned more than one result !?!
Sobald Sie also den Eintrag im LDAP-Server korrigiert haben, sollte der sssd in der Lage sein, ihn wieder korrekt aufzunehmen. Wenn dies nicht der Fall ist, warten Sie 300 Sekunden, da die Standardzeit, in der sich dieser Cache selbst leert, 300 Sekunden (d. h. fünf Minuten) beträgt. Sie können auch den folgenden Befehl verwenden, um den SSD-Cache mit geeigneten Optionen gemäß den Anforderungen zu leeren:
Das -E Flag kann verwendet werden, um alle zwischengespeicherten Einträge ungültig zu machen. Ausnahme sind sudo-Regeln.
# sss_cache -E
Mit dem -u können Sie auch nur einen bestimmten Benutzer aus dem Cache ungültig machen Flag, gefolgt vom Benutzernamen.
# sss_cache -u user1
Außerdem können Sie die Datei sss_cache aus dem Verzeichnis /var/lib/sss/db/ löschen.
# service sssd stop # rm -rf /var/lib/sss/db/* # service sssd start