getent shadow 显示某些用户的密码哈希

Den*_*son 5 password ldap authentication shadow getent

如果我执行

sudo getent shadow
Run Code Online (Sandbox Code Playgroud)

我看到所有拥有密码的本地用户的密码哈希。对于大多数 LDAP 帐户,我只*在密码字段中看到。但是,对于一些 LDAP 用户,我看到了密码哈希。我已经确认他们没有本地帐户(即没有输入/etc/passwdgetent passwd username返回一行)。

事实上,以我自己的身份登录,我的用户条目是带有*.

有一个运行 OpenLDAP 的 LDAP 服务器和一组帐户(树中的一个分支)。

LDAP 客户端服务器正在运行nscd并且libnss-ldap.

这是/etc/nsswitch.confLDAP 客户端服务器上的一部分:

passwd:         files ldap
group:          files ldap
shadow:         files ldap
Run Code Online (Sandbox Code Playgroud)

在这种情况下,LDAP 用于验证用户登录 LDAP 客户端服务器的身份,并且在某些时候,身份验证机制(在这种情况下为 PAM)必须根据存储的哈希值检查用户在登录时提供的密码的哈希值包含在 LDAP 数据库中。

每个用户的 LDAP 帐户都存储他们的密码哈希,并具有objectClassesposixAccountshadowAccount(以及其他值和设置)。

只有系统帐户在/etc/password和 中有本地条目/etc/shadow。用户帐户都在 LDAP 上(并且仅在那里)。LDAP 中的所有用户都有 userPassword 条目。

什么可能导致这种情况或我怎样才能解决它的原因?为什么不getent shadow为所有 LDAP 用户返回密码哈希?