We have several RHEL6 servers connected to Active Directory using winbind. All servers are configured identically using a configuration management tool. Servers however produce different results when querying groups using the groups command and/or sudo. Getent and winbind however return correct consistent results on all servers.
user.name1 and user.name2 are members of the group test.group1. test.group1 is a member of the group test.group2
Running the following commands is consistent on all servers:
# getent group test.group1 test.group1:*:16126:user.name1,user.name2 # getent group test.group2 test.group2:*:16125:user.name1,user.name2 # wbinfo --group-info test.group1 test.group1:*:16126:user.name1,user.name2 # wbinfo --group-info test.group2 test.group2:*:16125:user.name1,user.name2
However server A incorrectly returns:
# groups user.name2 test.group1
Server B correctly returns:
# groups user.name2 test.group1 test.group2
The Samba config looks like:
winbind use default domain = true winbind offline logon = false winbind separator = + winbind enum users = Yes winbind enum groups = Yes winbind nested groups = Yes winbind expand groups = 10 server string = Linux Server strict locking = no wins server = 192.168.0.1 idmap config * : range = 10000-50000000 idmap config * : backend = rid idmap config SENT : range = 10000-50000000 idmap config SENT : default = yes idmap config SENT : backend = rid idmap uid = 10000-50000000 idmap gid = 10000-50000000
nsswitch.conf looks like:
passwd: files winbind shadow: files winbind group: files winbind
I'd hazard a guess to say the answer is somewhere in PAM or perhaps a winbind lookup error, Any thoughts or suggestions as where to look? Winbind / servers have been restarted, tdb files rebuilt. The problem may be intermittent as well.
Finally getting to have another look at this issue. I've rebuilt the authentication using SSSD instead of winbind and the same occurs
[sssd] config_file_version = 2 domains = sent.local services = nss, pam debug_level = 1 [nss] [pam] [domain/sent.local] id_provider = ad auth_provider = ad access_provider = ad default_shell = /bin/bash fallback_homedir = /home/domain/%u use_fully_qualified_names = False
Now we have some interesting results, users who have never been domain admins have the same result as before, until we pre-cache the groups we know they are members of, for example:
[root@test-smg1 - (11:46:40) sssd]# id test.user5 uid=1084806380(test.user5) gid=1084800513(domain users) groups=1084800513(domain users) [root@test-smg1 - (11:46:43) sssd]# getent group testg2 testg2:*:1084806126:test.user5,test.user4,test.user3,test.user2 [root@test-smg1 - (11:46:46) sssd]# id test.user5 uid=1084806380(test.user5) gid=1084800513(domain users) groups=1084800513(domain users),1084806126(testg2) [root@test-smg1 - (11:46:49) sssd]# getent group testg2-nest testg2-nest:*:1084806125:test.user4,test.user3,test.user2,test.user5 [root@test-smg1 - (11:46:54) sssd]# id test.user5 uid=1084806380(test.user5) gid=1084800513(domain users) groups=1084800513(domain users),1084806126(testg2),1084806125(testg2-nest)
This makes me think the issue might be more in the direction of active directory and this ADs specific implementation than an issue linux side. Making a user a member of Domain Admins causes all their groups to show correctly. Removing the user from Domain Admins leaves the user in this "fixed" state.