我们有几个使用winbind连接到Active Directory的RHEL6服务器。 所有服务器都使用configurationpipe理工具进行相同的configuration。 但是,使用groups命令和/或sudo查询组时,服务器会产生不同的结果。 然而,Getent和winbind会在所有服务器上返回正确的一致结果。
user.name1和user.name2是组test.group1的成员。 test.group1是组test.group2的成员
在所有服务器上运行以下命令是一致的:
# 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
但是服务器A不正确地返回:
# groups user.name2 test.group1
服务器B正确返回:
# groups user.name2 test.group1 test.group2
Sambaconfiguration如下所示:
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看起来像:
passwd: files winbind shadow: files winbind group: files winbind
我想冒险猜测答案是在PAM的某个地方,或者也许是一个winbind查找错误,任何想法或build议作为在哪里看? Winbind /服务器已经重新启动,tdb文件重build。 问题也可能是间歇性的。
编辑:
最后再来看看这个问题。 我使用SSSD而不是winbind重build了身份validation,发生同样的情况
sssd.conf
[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
现在我们得到了一些有趣的结果,那些从来不是域pipe理员的用户和之前的结果一样,直到我们预先caching了我们知道他们是成员的组为止,例如:
[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)
这使得我认为这个问题可能更多的是在活动目录的方向,而这个AD的具体实现比linux一方的问题要多。 使用户成为域pipe理员的成员会导致他们的所有组正确显示。 从Domain Admins中删除用户将使用户处于“固定”状态。
看起来这是我们AD设置中的一个非常特殊的问题,“读取组成员资格”会针对当前正在使用的用户的经过身份validation的用户进行检查,而对于那些没有进行检查的用户则会取消选中。 增加这个权利解决了这个问题(虽然winbind需要大量的时间来应对变化)。

我在winbind上遇到了同样的麻烦。
在这里,你是我的情况的一些分析细节:
– 多个用户受到这个问题的影响(总计800个用户)。
– 只有less数组丢失(wbinfo -r; id)(有些仍然分配给)有问题的帐户 – 可能不是由AD中有问题的用户权限造成的
– 组中的用户列表已完成(getent组;不幸的是,我还没有find方法来通过wbinfo列出组用户)
– 我的所有服务器都使用相同版本的samba,并且问题出现在同一用户的所有服务器上。
我会尝试设置SSSD来确认,这个问题与AD相关,而不是SAMBA。