在本地身份验证之前尝试 LDAP 身份验证

在本地身份验证之前尝试 LDAP 身份验证

我已经在本地网络 (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 并删除任何重叠的帐户。

相关内容