El problema
Al ejecutar el comando "id" contra los usuarios de LDAP, solo muestra el gid para algún grupo secundario y el nombre del grupo no se imprime:
# id user1 uid=48254(user1) gid=100(users) groups=100(users),5002(group1),5001(group2),41257(group3),856(group4),56971
Y, el siguiente error se registró en /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 !?!
La solución
El nuevo grupo se agregó con el mismo GID que el del grupo existente.
# 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)
El mismo ID está asignado a 2 grupos, group5 y group6. Entonces, cuando hacemos una identificación, obtenemos un resultado correcto para el usuario (se muestran todos los grupos de usuarios). Luego ejecutamos getent group para el otro grupo:
# getent group group5
Pero después de eso, parece que el grupo se eliminó de los resultados de identificación.
SSSD tiene una restricción estricta en SysDB de que solo puede existir un grupo con una identificación particular. Cuando se cambia el nombre de un grupo en el servidor, se convierte en un problema de orden de operaciones, ya sea que lo manejemos correctamente o no. No admitimos varias entradas con el mismo GID y, al hacerlo, se producirá un comportamiento inesperado.
Entonces, el siguiente error se registró en /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 !?!
Por lo tanto, una vez que corrija la entrada en el servidor LDAP, el sssd debería poder recuperarla correctamente. Si no lo hace, espere 300 segundos, ya que el tiempo predeterminado para que ese caché se vacíe es de 300 segundos (es decir, cinco minutos). También puede usar el siguiente comando para vaciar el caché sssd con las opciones adecuadas según el requisito:
El -E bandera se puede utilizar para invalidar todas las entradas en caché. La excepción son las reglas de Sudo.
# sss_cache -E
También puede invalidar a un usuario específico solo desde el caché con -u bandera, seguida del nombre de usuario.
# sss_cache -u user1
Además, puede eliminar el archivo sss_cache desde el directorio /var/lib/sss/db/.
# service sssd stop # rm -rf /var/lib/sss/db/* # service sssd start