Я установил систему LDAP в своей локальной сети (CentOS7), и, похоже, она работает должным образом. Теперь я создал пользователя в LDAP, имя которого точно такое же, как имя уже существующего локального пользователя на одном из моих клиентов LDAP. Когда я проверяю их на клиенте, например:
getent passwd | grep anakin
Я получил:
anakin:x:1000:1000:Anakin Skywalker:/home/anakin:/bin/bash
anakin:*:2000:1000:Anakin Skywalker:/home/anakin:/bin/bash
так что я знаю, что они оба действительно существуют. Поэтому, когда я вхожу в систему как Анакин и проверьте мой идентификатор, он говорит мне:
uid=1000(anakin) gid=1000(Jedi) [...]
Для меня это выглядит так, как будто я вошел в систему как локальный пользователь, а не как пользователь LDAP. Возможно, это настроено по умолчанию, так что это нормально, но как мне это изменить, чтобы я вошел в систему как пользователь LDAP до того, как машина проверит наличие локальных пользователей с тем же именем пользователя? Я полагаю, это как-то связано с пам, но на самом деле все файлы в /etc/pam.d/ начинать с:
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
Я пытался решить свою проблему с помощью authconfig --disableshadow
но не добился никакого прогресса.
Другое дело, что если у меня разные пароли для обоих пользователей с одинаковым именем, я могу войти в систему с обоими паролями, но всегда буду локальным пользователем, даже если я использовал пароль пользователя LDAP. Я не знаю, действительно ли аутентификация должна работать так.
Это не имеет ничего общего с файлами конфигурации в /etc/pam.d
, или даже вообще PAM.
Служба, о которой вы говорите, известна как Переключатель службы имен, (NSS); его цель - запросить информацию из различных доступных баз данных, например, passwd, group, shadow и т. д.
Порядок записей в /etc/nsswitch.conf
- это порядок, в котором будет запрашиваться каждая база данных.
Так как mdpc заявилиз-за проблем, связанных с сетью, запросы пользователей через LDAP иногда могут привести к сбою. Однако здесь что-то вроде nscd
может помочь.
Nscd используется для кэширования этих записей базы данных; что может улучшить производительность, но также может быть причиной дальнейшей путаницы, например, если пароль кэшированного пользователя изменяется в каталоге, может пройти некоторое время, прежде чем он будет обновлен локально.
Я считаю, что лучше всего это изменить в nsswitch.conf.
Тем не менее, предупреждение состоит в том, что в случае проблемы с сетью вы можете захотеть иметь несколько локальных учетных записей для восстановления, то, что вы предлагаете, может вызвать некоторые проблемы. Поэтому я бы по-прежнему придерживался passwd: local ldap и удалял все перекрывающиеся учетные записи.