不久前,我们开始根据 Active Directory 对 Linux 服务器上的用户进行身份验证。就实际的身份验证部分而言,一切运行良好。
然而,副作用之一是 Linux 认为(有点正确)它有数千(~15-20k)用户。我们已经看到几个似乎与 SELinux 相关的问题(其中之一是https://serverfault.com/questions/236419/usr-bin-install-hangs-apparently-due-to-selinux)。其他一些问题包括:
我们在许可模式下看到 SELinux 存在这些问题。当我们完全禁用 SELinux 时,它们就会消失。禁用 SELinux 是一个选项。我也在寻找方法来限制 AD 使用 OU 或组向 Linux 呈现的用户数量。但我的书呆子总是想知道更多。
所以这是一个相当广泛的问题 - 但是有人对处理具有大量用户的 SELinux 有什么建议吗?我对 SELinux 不是特别熟悉——但这可能是一个学习机会。
对我来说,这感觉像是对 libselinux 的疏忽。
这里的“修复”是将旧的 /etc/selinux/targeted/contexts/files/file_contexts.homedirs 重命名为其他名称。创建一个新文件(通常包含一些通用正则表达式,您可以在原始文件的顶部找到它们),然后将该文件设置为不可变,以便策略重写器不会重新生成该文件(当新的 selinux-policy 时会发生这种情况) -部署了目标rpm)。
这将防止 CPU 被占用。
发生您的问题是因为restorecond 打开此文件作为扫描用户目录中文件的参考,必须始终保护该目录免受无效文件标签更改的影响。但由于您的文件包含成千上万的条目,因此扫描会占用大量 CPU。
我怀疑在创建库时从未考虑过这一点,并且可能需要从 SELinux 端重新考虑。但就目前而言,“修复”应该有效。