Problém
Při spuštění příkazu „id“ proti uživatelům LDAP se zobrazí pouze gid pro nějakou sekundární skupinu a název skupiny se netiskne:
# id user1 uid=48254(user1) gid=100(users) groups=100(users),5002(group1),5001(group2),41257(group3),856(group4),56971
A níže uvedená chyba byla zaznamenána v /var/log/sssd/sssd_nss.log :
(Tue Mar 14 05:40:09 2020) [sssd[nss]] [nss_cmd_getgrgid_search] (0x0010): getgrgid call returned more than one result !?!
Řešení
Nová skupina byla přidána se stejným GID jako ta stávající.
# 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)
Stejné ID je mapováno na 2 skupiny, group5 a group6. Takže když uděláme id, jakmile dostaneme správný výsledek pro uživatele (zobrazí se všechny skupiny uživatelů). Poté spustíme getent group pro druhou skupinu:
# getent group group5
Ale poté se zdá, že skupina je vyřazena z výsledků id.
SSSD má v SysDB tvrdé omezení, že s konkrétním ID může existovat pouze jedna skupina. Když je skupina na serveru přejmenována, stává se problémem pořadí operací, zda s ní zacházíme správně nebo ne. Nepodporujeme více položek se stejným GID a to povede k neočekávanému chování.
Takže níže uvedená chyba byla zaznamenána v /var/log/sssd/sssd_nss.log :
(Tue Mar 14 05:40:09 2020) [sssd[nss]] [nss_cmd_getgrgid_search] (0x0010): getgrgid call returned more than one result !?!
Jakmile tedy opravíte záznam na serveru LDAP, sssd by měl být schopen jej znovu správně vybrat. Pokud ne, počkejte 300 sekund, protože výchozí doba pro vyprázdnění mezipaměti je 300 sekund (tj. pět minut). Můžete také použít níže uvedený příkaz k vyprázdnění mezipaměti sssd vhodnými možnostmi podle požadavku:
-E příznak lze použít ke zrušení platnosti všech položek uložených v mezipaměti. Výjimkou jsou pravidla sudo.
# sss_cache -E
Můžete také zneplatnit konkrétního uživatele pouze z mezipaměti pomocí -u příznak následovaný uživatelským jménem.
# sss_cache -u user1
Také můžete smazat soubor sss_cache z adresáře /var/lib/sss/db/.
# service sssd stop # rm -rf /var/lib/sss/db/* # service sssd start