With several machines configured to use OpenLdap for user and group authentication/permissions I was having the problem that the getent and id commands were not returning all the group information. My groups exist in the Ldap directory with members listed under ‘memberuid’
but when entering:
I was getting:
uid=15052(testuser) gid=10000(testgroup) groups=10000(testgroup)
when I should have been getting:
uid=15052(testuser) gid=10000(testgroup) groups=10000(testgroup),10015(anothergroup),10001(group3),10008(group4)
I discovered the cause of the problem in a Fedora wiki – see important bit below:
When running id user, no groups are displayed.
When running getent group $groupname, no group members are displayed
In both cases, make sure the selected schema is correct. By default, SSSD will use the more common RFC 2307 schema. The difference between RFC 2307 and RFC 2307bis is the way which group membership is stored in the LDAP server. In an RFC 2307 server, group members are stored as the multi-valued attribute memberuid which contains the name of the users that are members. In an RFC2307bis server, group members are stored as the multi-valued attribute member (or sometimes uniqueMember) which contains the DN of the user or group that is a member of this group. RFC2307bis allows nested groups to be maintained as well.
So in my /etc/sssd/sssd.conf file I had been using the rfc2307bis schema. When I changed that to rfc2307 and restarted the service I got the results I expected. The lines I needed to change in /etc/sssd/sssd.conf were from:
ldap_schema = rfc2307bis ... ldap_group_member = uniquemember
ldap_schema = rfc2307 ... ldap_group_member = memberuid