如果我执行
sudo getent shadow
我看到所有拥有密码哈希值的本地用户。对于大多数 LDAP 帐户,我只*
在密码字段中看到。但是,对于一些 LDAP 用户,我看到密码哈希值。我已经验证他们没有本地帐户(即没有输入/etc/passwd
但getent passwd username
返回一行)。
事实上,以我自己的身份登录,我的用户条目是带有*
.
有一个 LDAP 服务器运行 OpenLDAP,并具有一组帐户(树中的一个分支)。
LDAP 客户端服务器正在运行nscd
并且libnss-ldap
.
/etc/nsswitch.conf
这是LDAP 客户端服务器上的一部分:
passwd: files ldap
group: files ldap
shadow: files ldap
在这种情况下,LDAP 用于验证用户登录 LDAP 客户端服务器的身份,并且在某些时候,身份验证机制(在本例中为 PAM)必须根据存储的哈希值检查用户在登录时提供的密码哈希值。包含在 LDAP 数据库中。
每个用户的 LDAP 帐户存储其密码哈希值并具有objectClass
和posixAccount
(shadowAccount
以及其他值和设置)。
只有系统帐户在/etc/password
和中具有本地条目/etc/shadow
。用户帐户全部位于 LDAP 上(并且仅存在于此)。 LDAP 中的所有用户都有用户密码条目。
可能是什么原因导致了这种情况,或者我该如何找出其原因?为什么不getent shadow
返回所有 LDAP 用户的密码哈希值?