服务器:Centos 7.2,客户端:Debian 8.6
问题是,当密码在服务器端通过 SHA/SSHA 加密时,我无法登录客户端。
客户端站点的 Ldapsearch 可以工作。当我以用户 raj3 的身份询问服务器时,我可以从服务器收到属性。它使用 SSHA 和 CRPYPT 编码的用户密码工作。
在服务器端密码由
ldappasswd -s 密码123 -W -D "cn=admin,dc=pydio,dc=sum,dc=edu,dc=pl" -x "uid=raj3,ou=People,dc=pydio,dc=xxx,dc=edu,dc=pl"
命令:
getent passwd raj3
得到客户的良好反响。
当我拥有通过 SHA/SSHA 编码的密码时,我可以通过 JXpolorer(从同一网络中的 Windows)以用户 raj3 的身份登录到 ldap 服务器,并且可以看到该用户的属性。
2019 年 9 月 2 日新详情:
客户端有:ibpam-ldap,安装由以下人员准备:
aptitude -y install libnss-ldap libpam-ldap ldap-utils
/etc/pam.d/通用密码
password [success=2 default=ignore] pam_unix.so obscure
password [success=1 user_unknown=ignore default=die] pam_ldap.so try_first_pass
password requisite pam_deny.so
password required pam_permit.so
我在上面使用 sha512 进行了测试:
password [success=2 default=ignore] pam_unix.so obscure sha512
还有同样的问题。
/etc/nsswitch.conf
passwd: compat ldap
group: compat ldap
shadow: compat ldap
gshadow: files
hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: ldap
/etc/pam_ldap.conf
pam_password crypt
getent passwd raj3 -仅在客户端上使用 root 本地帐户,在其他本地帐户上工作。
我误解了为什么 CRYPT 可以工作,而当命令 getent 在非 root 帐户上不起作用时 SSHA 却不起作用。
ACL olcAccess:{0}to * by dn="cn=admin,dc=pydio,dc=sum,dc=edu,dc=pl" 由用户自行写入 由 * auth 读取
ACL 禁止匿名用户查看 ldap 树是否错误?但是为什么我可以使用这样的 ACL 使用 CRYPT 加密密码登录?这对我来说很难解决。
答案1
我只是猜测,因为这里提供的信息太少。
您是否已安装并正确配置了 pam ldap?似乎已安装并配置了 nss ldap,但这只是您所需的一半。
编辑:你似乎有多个基本问题,而不是一个。因此我建议阅读此指南以开始http://www.tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/pamnss.html 这是一份久经考验的文档。它应该能帮助您完成这项工作。
答案2
我发现当“{SSHA} i {CRYPT} 存在问题”时会出现:
我在 /etc/pam_ldap.secret 中输入了错误的管理员密码。好吧,这是我的失误。谜团在于:为什么当 /etc/pam_ldap.secret 中的密码错误时,使用 CRYPT 加密的密码的用户可以进行身份验证,而使用 SSHA 加密的用户密码却无法进行身份验证?这真是令人头痛。