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

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

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

经过最近的yum更新(CentOS 5)之后,进程的组ID已经从/etc/group中的值改变为LDAP中的值(而用户ID仍然是来自/etc/passwd的ID)。 由于httpd所需的一些文件是由root用户拥有的,所以apache(来自/etc/group )但不是全世界可读的,这就造成了问题。

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

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

和其余的正常位和鲍勃。

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

我不知道在你的例子中是否是一个错字,但是组数据库被称为group而不是groups

你应该能够强制search成功查找后停止,例如

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

以上应该是反盗版行动,所以你应该确认你正在寻找什么是在files

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