当名称冲突时,如何使本地 /etc/group 优先于 LDAP?

当名称冲突时,如何使本地 /etc/group 优先于 LDAP?

我们已设置了有效的 LDAP。但是,我们最近遇到了一个问题,因为一些用户名和组名同时存在于本地文件和 LDAP 中。具体来说,apache 用户和组同时存在于:

  • /etc/passwd/etc/group
  • LDAP 作为用户和组

在最近的 yum 更新(CentOS 5)之后,似乎进程的组 ID 已从 中的值更改为/etc/groupLDAP 中的值(而用户 ID 仍为 中的 ID /etc/passwd)。由于 httpd 所需的某些文件归用户 root 所有,且属于 apache 组(来自/etc/group),但不是所有人都可读的,因此这导致了问题。

nss_initgroups_ignoreusers apache,...请注意,在和中/etc/ldap.conf我们已经有了/etc/openldap/ldap.conf。此外,在/etc/nsswitch.conf我们有

passwd:     files ldap
group:     files ldap
shadow:     files ldap

以及其他一些正常的部分和小东西。

因此,如果 LDAP 和本地文件中都存在一个名称,有没有办法确保本地文件中的 ID 优先于 LDAP 中的 ID?

答案1

我不知道您的例子中是否有拼写错误,但组数据库被称为group而不是groups

您应该能够在查找成功后强制停止搜索,例如

passwd:    files [SUCCESS=return] ldap
group:     files [SUCCESS=return] ldap

无论如何,上述操作应为默认操作,因此您应该确认您要查找的内容确实存在于其中files

注意事项在每个使用 nsswitch.conf 的进程中,整个文件只读取一次;如果该文件稍后发生变化,进程将继续使用旧的配置。

相关内容