我在使 LDAP sudoers 规则正常工作时遇到问题。我的环境是:
- Windows Server 2012 R2 上的活动目录
- 乌班图16.04.2
- SSSD 1.13.4-1ubuntu1.5
- sudo 1.8.20-3(截至发帖时最新,尝试了 LDAP 和非 LDAP 版本)
我跟着这些说明创建 sudo_debug.log (已清理):
Jun 19 14:53:28 sudo[60452] Received 2 rule(s)
Jun 19 14:53:28 sudo[60452] -> sudo_sss_filter_result @ ./sssd.c:225
...
Jun 19 14:53:28 sudo[60452] sssd/ldap sudoHost 'ALL' ... MATCH!
...
Jun 19 14:53:28 sudo[60452] val[0]=%linuxadmins
...
Jun 19 14:53:28 sudo[60452] sudo_get_grlist: looking up group names for [email protected]
...
Jun 19 14:53:28 sudo[60452] sudo_getgrgid: gid 1157000513 [] -> group domain [email protected] [] (cache hit)
...
Jun 19 14:53:28 sudo[60452] user_in_group: user [email protected] NOT in group linuxadmins
Jun 19 14:53:28 sudo[60452] <- user_in_group @ ./pwutil.c:1031 := false
Jun 19 14:53:28 sudo[60452] user [email protected] matches group linuxadmins: false @ usergr_matches() ./match.c:969
Jun 19 14:53:28 sudo[60452] <- usergr_matches @ ./match.c:970 := false
Jun 19 14:53:28 sudo[60452] sssd/ldap sudoUser '%linuxadmins' ... not ([email protected])
...
从这个日志中,你可以看到:
- sudoers 规则从 AD 获取到 sudo(2 条规则,显示的一条与 AD 条目匹配)
linuxadmins
组内匹配失败
但是,用户位于linuxadmins
组中(已清理,但“用户”匹配):
$ getent group linuxadmins
[email protected]:*:1157001133:[email protected],[email protected]
该日志唯一奇怪的地方是它sudo_get_grlist
似乎只返回用户的 Primary Group 。这可以解释为什么没有比赛。domain [email protected]
有没有人见过这个?知道组列表是否在 sudo 内解决(我应该继续等待我的问题sudo-users
)或其他地方(如 SSSD)(我应该找到他们的列表)?
答案1
是的,缺乏主要群体可能是问题所在。有效的事实getent group
是无关紧要的,sudo
使用 initgroups 输出,这或多或少是你调用 时得到的id
。
而且您也认为 sssd-users 是最好的:https://lists.fedorahosted.org/admin/lists/sssd-users.lists.fedorahosted.org/
不久前我们甚至修复了我们的故障排除指南:https://pagure.io/docs/SSSD/sssd/,直接链接是https://docs.pagure.org/SSSD.sssd/users/troubleshooting.html
答案2
在 CentOS 7 中,我遇到了同样的 id 问题,仅显示主要组,例如:
id DOMAIN\\administrator
uid=485400500(administrator) gid=485400513(domain users) groups=485400513(domain users)
我正在读这篇参考资料(关联)并编辑我的/etc/sssd/sssd.conf
,并意识到我缺少一些推荐的配置选项。之前,我只有:
[domain/AD.DOMAIN]
id_provider = ad
所以我在其下面添加了参考文献中提到的其他标志:
auth_provider = ad
chpass_provider = ad
access_provider = ad
不幸的是,我不知道他们中的哪一个负责这一改进,但如果我不得不猜测的话,那就是auth_provider = ad
。现在id
有这样的结果:
id DOMAIN\\administrator
uid=485400500(administrator) gid=485400513(domain users)
groups=485400513(domain users),485400518(schema admins),485400519(enterprise
admins),485400512(domain admins),485403117(sudoers),485400520(group policy
creator owners),485400572(denied rodc password replication
group),485401624(esx admins),485401679(wseremotewebaccessusers),
485401680(wseallowshareaccess),485401681(wseallowcomputeraccess),
485401682(wseallowmediaaccess),485401683(wseallowadd inaccess),485401684(wseallowdashboardaccess),
485401685(wseallowhomepagelinks),45401686(wsealertadministrators),
485401687(wseremoteaccessusers),485403103(ipamad mins)