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

Ham*_*ner 4 openldap ldap centos

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

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

在最近的 yum 更新(CentOS 5)之后,进程的组 ID 似乎已从/etc/groupLDAP 中的值更改为值(而用户 ID 仍然是 中的 ID /etc/passwd)。由于 httpd 需要的一些文件由用户 root 拥有,组 apache (from /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
Run Code Online (Sandbox Code Playgroud)

和其余的正常点点滴滴。

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

use*_*517 5

我不知道您的示例中是否有错别字,但组数据库被称为group而不是groups.

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

passwd:    files [SUCCESS=return] ldap
group:     files [SUCCESS=return] ldap
Run Code Online (Sandbox Code Playgroud)

无论如何,以上应该是默认操作,因此您应该确认您正在寻找的内容确实在files.

注意 在使用 nsswitch.conf 的每个进程中,整个文件只读取一次;如果文件稍后更改,则该过程将继续使用旧配置。