有没有办法配置 sudo 而不需要查找组名/或加快 sssd 组名解析?

有没有办法配置 sudo 而不需要查找组名/或加快 sssd 组名解析?

我有大量 Linux 主机连接sssd到 Windows Active Directory (AD) 域以进行用户/组查找。除了一个问题外,大部分都运行正常; sudo

从我在测试中发现的情况来看,每次运行sudo命令时sudo,都会尝试解析用户所在的所有组的所有名称。由于sssd默认情况下只缓存 gid 并且必须缓慢地查找名称(假设sssd最近没有导致主机上缓存组名的原因),这可能会导致sudo命令在许多组中的帐户中暂停 45 秒,然后才会提示用户输入密码以继续执行命令sudo

根据我的测试,无论是否有任何sudo适用于使用其群组的用户的规则,此群组名称解析都会发生。我已测试更改 group_source 值,sudo.conf但似乎没有太大效果。

将所有用户从他们所在的大多数组中删除并不是一个真正的选择(我无法控制基础设施安全决策),所以我只能尝试找到一种方法来在sudo查找所有组 ID 时停止长时间的暂停。

到目前为止,我想到的唯一解决方案是每 15 分钟运行一次 cronjob,以执行类似getent groupsssd组名持续缓存在内存中之类的操作,但这似乎是一种不靠谱的解决方法。所以我希望网上有人能有更好的解决方案来加快sudo这种情况的速度?

答案1

我建议将ignore_group_members选项设置为true,或者将缓存符号链接到 tmpfs,或者等待 1.14 上游版本。

组解析速度慢的原因是,在缓存过期后保存缓存更新中的组时,即使没有任何变化,也会始终将完整的组对象写入磁盘缓存。在 1.14 中,我们正在更改缓存逻辑,仅在实际发生更改时才更新缓存,请参阅十四项性能改进

设置ignore_group_members将使组显示为空,从而减少其大小并加快缓存保存时间。请注意,这不会对sudo功能产生任何影响,因为sudo使用来initgroups()查看用户是哪些组的成员,而不是getent groupinitgroups。

我也写了一篇博客文章sssd前段时间关于性能调优的文章,虽然重点是IPA服务器的情况,但是很多观点sssd-ad也适用于配置。

相关内容