我们已设置了有效的 LDAP。但是,我们最近遇到了一个问题,因为一些用户名和组名同时存在于本地文件和 LDAP 中。具体来说,apache 用户和组同时存在于:
/etc/passwd
和/etc/group
- LDAP 作为用户和组
在最近的 yum 更新(CentOS 5)之后,似乎进程的组 ID 已从 中的值更改为/etc/group
LDAP 中的值(而用户 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 的进程中,整个文件只读取一次;如果该文件稍后发生变化,进程将继续使用旧的配置。