如何处理SELinux中的大量用户?

前一阵子,我们开始在我们的Linux服务器上针对Active Directoryvalidation用户身份。 就实际的authentication部分而言,事情是很好的。

然而,其中一个副作用是Linux认为(正确地说)它有几千(〜15-20k)个用户。 我们已经看到好几个与SELinux相关的问题(其中之一是https://serverfault.com/questions/236419/usr-bin-install-hangs-apparently-due-to-selinux )。 其他一些问题包括:

  • dmesg反复报道restorcon被杀人凶手杀死
  • 在某些服务器上启动需要很长时间 – 这发生在内核加载之后,显然是在读取卷组的同时,还会在运行restorecon启动脚本时发生。
  • yum更新挂起(类似于我的SELinux / GNU“安装”问题关于mmap / munmap)

我们在宽容模式下看到了SELinux的这些问题。 当我们完全禁用SELinux时,它们就会消失。 禁用SELinux是一个选项。 我也在研究如何限制AD使用OU或组来呈现给Linux的用户数量。 但是我的书呆子总是想知道更多。

所以这是一个相当广泛的问题 – 但是任何人都有与大量用户交streamSELinux的build议? 我对SELinux不是特别熟悉 – 但这可能是学习的机会。

这感觉就像我对libselinux的一个疏忽。

这里的“修复”是将旧的/etc/selinux/targeted/contexts/files/file_contexts.homedirs重命名为别的。 创build一个新的(通常包含几个通用的正则expression式,您可以在原始文件的顶部find),然后设置该文件不可变,以便策略重写器不重新生成文件(这发生在新的selinux策略定位的rpm被部署)。

这将防止CPU咀嚼你越来越。

发生问题是因为restorecond将此文件作为引用来扫描用户目录中的文件,而这些文件必须始终受到保护以防止无效的文件标签更改。 但是由于您的文件包含成千上万的条目,因此扫描会占用大量的CPU。

我怀疑这个库在创build时从来没有被考虑过,可能需要从SELinux的结尾重新思考。 但是现在 – 这个“修复”应该可行。

这实际上取决于restorecon实际上在做什么,但是通常你根本不想运行它,因为这意味着文件被贴上了错误的标签,并且restorecon想要做正确的修改。 解决办法是使用正确的标签创build这些文件。

如果它实际上是在后台运行的守护进程restorecond来执行重新标记,那么你可以调整它,所以它不会做它不应该的文件。 请参阅restorecond的手册页。

这些服务器是否处理多个文件? 或者做很多文件创build? 它是否挂载NFS共享?

你用什么发行版? Redhat和Fedora对selinux相关的问题非常敏感。 如果庞大的用户数据库或用户群是真正的问题,他们几乎肯定会想知道它。 用bugzilla提交bug。