我已经在本地网络 (CentOS7) 中设置了一个 LDAP 系统,它似乎按预期工作。现在我在 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 用户的密码,最终也始终是本地用户。我不知道身份验证是否真的应该这样工作。
答案1
/etc/pam.d
这与 中的配置文件甚至 PAM 根本无关。
您所指的服务称为名称服务切换 (NSS);它的目的是从不同的可用数据库中查询信息,例如 passwd、group、shadow 等。
条目的顺序/etc/nsswitch.conf
就是每个数据库被查询的顺序。
作为mdpc表示由于网络相关问题,通过 LDAP 查询用户有时可能会导致失败。但是,这就是nscd
可以帮助。
Nscd 用于缓存这些数据库条目;这可以提高性能,但也可能导致进一步的混乱,即,如果缓存的用户密码在目录中发生变化,则可能需要一些时间才能在本地更新。
答案2
我认为需要改变的地方是 nsswitch.conf。
但是,需要注意的是,如果发生网络问题,您可能希望有几个本地帐户用于恢复,您的建议可能会导致一些问题。因此,我仍然坚持使用 passwd: local ldap 并删除任何重叠的帐户。