我在 CentOS 7.4 上运行 OpenLDAP 2.4.44,并添加了“测试者”用户。我可以查询用户并更改密码,但使用 GNOME 登录屏幕进行身份验证时总是被拒绝。我使用了这个指导进行设置。
我用来设置系统的 LDIF 文件如下:
数据库文件
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=ldapadm,dc=example
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: <omitted>
监控文件
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=ldapadm,dc=example" read by * none
基础LDIF文件
dn: dc=example
dc: example
objectClass: top
objectClass: domain
dn: cn=ldapadm,dc=example
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager
dn: ou=People,dc=example
objectClass: organizationalUnit
ou: People
dn: ou=Groups,dc=example
objectClass: organizationalUnit
ou: Groups
证书.ldif(这些证书已创建并且所有者/组已更改为 ldap:ldap)
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/managerldapcert.pem
dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/managerldapkey.pem
测试器文件
dn: uid=tester,ou=People,dc=example
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tester
uid: tester
uidNumber: 9001
gidNumber: 100
homeDirectory: /home/tester
loginShell: /bin/bash
gecos: Tester Account
userPassword: {crypt}x
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0
显示用户的帐户信息:
ldapsearch -x cn=tester -b dc=example
答复如下:
# extended LDIF
#
# LDAPv3
# base <dc=example> with scope subtree
# filter: cn=tester
# requesting: ALL
#
# tester, People, example
dn: uid=tester,ou=People,dc=example
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tester
uid: tester
uidNumber: 9001
gidNumber: 100
homeDirectory: /home/tester
loginShell: /bin/bash
gecos: Tester Account
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0
userPassword:: <omitted>
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
我可以使用以下命令更改密码:
ldappasswd -H ldap:/// -x -D "cn=ldapadm,dc=example" -W -S "uid=tester,ou=People,dc=example"
这将提示输入新用户密码(两次)和 LDAP 根密码,然后退出。我可以观察到,通过使用 ldapsearch 重新查询(其中 userPassword:: 部分发生变化),密码已更改。
我可以使用以下方式登录 LDAP 帐户来验证密码:
ldapwhoami -vvv -h ldapi:/// -p 389 -D "uid=tester,ou=People,dc=example" -x -W
然后我使用以下命令设置 authconfig:
authconfig --enableldap --enableldapauth --ldapserver=servername.example --ldapbasedn="dc=example" --enablemkhomedir --update
但是,当我尝试使用 CentOS GNOME 登录屏幕时,密码被拒绝。
在/var/log/安全我看到以下内容:
pam_sss(gdm-password:auth): authentication failure; logname= uid=0 euid=0 tty=/dev/tty1 ruser= rhost= user=tester
pam_sss(gdm-password:auth): received for user tester: 6 (Permission denied)
我尝试过但没有成功的事情:
- 禁用 SELinux(作为测试,而不是因为它是一个可能的解决方案)
FORCELEGACY=yes
按照/etc/sysconfig/authconfig
此设置邮政- 使用
system-config-authentication
和其他建议关联 - 使用建议安装我创建的证书这里
我的问题是... CentOS 7 如何尝试登录(我如何使用 ldapwhoami 模拟登录尝试),以及如何更好地调试/记录? 我的用户 DN 看起来合理吗(第一个条目使用 uid 而不是 cn;我在不同的指南中看到过这两种方式)?
任何帮助都将不胜感激!