У нас есть рабочий LDAP. Однако недавно мы столкнулись с проблемой из-за того, что некоторые имена пользователей и имена групп существуют как в локальных файлах, так и в LDAP. В частности, пользователь и группа apache существовали как в:
/etc/passwd
и /etc/group
После недавнего обновления yum (CentOS 5) выяснилось, что идентификатор группы процесса изменился со значения в /etc/group
к значению в LDAP (в то время как идентификатор пользователя остался идентификатором из /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, так и в локальных файлах, есть ли способ гарантировать, что идентификатор из локальных файлов будет иметь приоритет над идентификатором в LDAP?
Не знаю, в вашем примере это опечатка, но база данных группы называется group
и нет groups
.
Вы должны иметь возможность остановить поиск после успешного поиска, например.
passwd: files [SUCCESS=return] ldap
group: files [SUCCESS=return] ldap
Вышеупомянутое действие в любом случае должно быть глухим, поэтому вы должны подтвердить, что то, что вы ищете, действительно находится в files
.
ЗАМЕЧАНИЯ В каждом процессе, использующем nsswitch.conf, весь файл читается только один раз; если файл позже будет изменен, процесс продолжится с использованием старой конфигурации.