我们有一个工作的LDAP设置。 不过,由于本地文件和LDAP中都存在一些用户名和组名,我们最近遇到了一个问题。 具体来说,apache用户和组都存在于:
/etc/passwd和/etc/group 经过最近的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。