Я установил систему 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
, так что я знаю, что оба они действительно существуют. Поэтому, когда я вхожу в систему как anakin и проверяю свой идентификатор, он сообщает мне:
uid=1000(anakin) gid=1000(Jedi) [...]
Для меня это выглядит так, как будто я вошел в систему как локальный пользователь, а не как пользователь LDAP. Возможно, это настроено по умолчанию, так что это нормально, но как мне это изменить, чтобы я вошел в систему как пользователь LDAP до того, как машина проверит наличие локальных пользователей с тем же именем пользователя? Я полагаю, это как-то связано с pam , но на самом деле все файлы в /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 вообще.
Ссылающаяся служба известна как Name Service Switch, (NSS); ее назначение - опрашивать информацию из различных доступных баз данных, напр, passwd, group, shadow, etc.
Порядок записей в /etc/nsswitch.conf
- это порядок, в котором будет опрашиваться каждая база данных.
Как указано в mdpc, из-за проблем, связанных с сетью, опрос пользователей через LDAP иногда может привести к неудаче. Однако, здесь может помочь что-то вроде nscd
.
Nscd используется для кэширования этих записей базы данных; это может улучшить производительность, но может также стать причиной дальнейшей путаницы, т.е. если кэшируемый пароль пользователя изменится в каталоге, может пройти некоторое время, прежде чем он будет обновлен локально.
.Я считаю, что место для изменения - nsswitch.conf.
Однако, предупреждение заключается в том, что в случае возникновения сетевой проблемы, вы можете захотеть иметь несколько локальных учетных записей для восстановления, то, что вы предлагаете, может вызвать некоторые проблемы. Поэтому я бы все равно остался с passwd: local ldap и удалил все перекрывающиеся учетные записи.
.