AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 899006
Accepted
Stephen M -on strike-
Stephen M -on strike-
Asked: 2018-02-27 14:29:26 +0800 CST2018-02-27 14:29:26 +0800 CST 2018-02-27 14:29:26 +0800 CST

Ubuntu 16.04 上的 ldap - 凭据无效 (49)

  • 772

我正在尝试设置一个本地 LDAP 实例,以便调试一些使用 LDAP 进行身份验证的软件。我让这个在 Ubuntu 14.04 LTS 上正常工作,但是试图通过盒子升级到 Ubuntu 16.04 LTS,我重新安装了从头开始的 Ubunut 16.04 LTS,并且在非常沮丧之后无法让 LDAP 正常工作。

我安装了 slapd 并用于slapadd -l <file>填充我的数据库。我可以看到我的文件已加载ldapsearch -x:

# extended LDIF
#
# LDAPv3
# base <dc=nodomain> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# nodomain
dn: dc=nodomain
objectClass: top
objectClass: dcObject
objectClass: organization
o: nodomain
dc: nodomain

# admin, nodomain
dn: cn=admin,dc=nodomain
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

# People, nodomain
dn: ou=People,dc=nodomain
objectClass: organizationalUnit
ou: People

# Groups, nodomain
dn: ou=Groups,dc=nodomain
objectClass: organizationalUnit
ou: Groups

# miners, Groups, nodomain
dn: cn=miners,ou=Groups,dc=nodomain
objectClass: posixGroup
cn: miners
gidNumber: 5000

# smm, People, nodomain
dn: uid=smm,ou=People,dc=nodomain
uid: smm
sn: McCants
givenName: Stephen
cn: Stephen McCants
displayName: Stephen McCants
uidNumber: 10000
gidNumber: 5000
gecos: Stephen McCants
loginShell: /bin/bash
homeDirectory: /home/smm
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: person

# search result
search: 2
result: 0 Success

# numResponses: 7
# numEntries: 6

但是,我的代码无法针对用户 'smm' 进行身份验证,并且我无法为用户设置密码ldappasswd -D "uid=smm,ou=People,dc=nodomain" -A -S -W。它提示我输入密码,然后失败并出现相同的错误:

Old password: 
Re-enter old password: 
New password: 
Re-enter new password: 
Enter LDAP Password: 
ldap_bind: Invalid credentials (49)

我还用来dpkg-reconfigure slapd设置 LDAP root 密码。但是,在重新配置之前和之后,我都会遇到同样的错误。这是用于填充数据库的原始文件:

n: ou=People,dc=nodomain
objectClass: organizationalUnit
ou: People
structuralObjectClass: organizationalUnit
entryUUID: 03a28690-1834-1033-87f5-8b9136017cf0
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20140123043856Z
entryCSN: 20140123043856.559226Z#000000#000#000000
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20140123043856Z

dn: ou=Groups,dc=nodomain
objectClass: organizationalUnit
ou: Groups
structuralObjectClass: organizationalUnit
entryUUID: 03b017e2-1834-1033-87f6-8b9136017cf0
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20140123043856Z
entryCSN: 20140123043856.648148Z#000000#000#000000
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20140123043856Z

dn: cn=miners,ou=Groups,dc=nodomain
objectClass: posixGroup
cn: miners
gidNumber: 5000
structuralObjectClass: posixGroup
entryUUID: 03b537ae-1834-1033-87f7-8b9136017cf0
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20140123043856Z
entryCSN: 20140123043856.681730Z#000000#000#000000
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20140123043856Z

dn: uid=smm,ou=People,dc=nodomain
uid: smm
sn: <my name>
givenName: <my name>
cn: <my name>
displayName: <my name>
uidNumber: 10000
gidNumber: 5000
gecos: <my name>
loginShell: /bin/bash
homeDirectory: /home/smm
structuralObjectClass: inetOrgPerson
entryUUID: 983bd260-1835-1033-87fb-8b9136017cf0
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20140123045015Z
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: person
userPassword: <redacted>
entryCSN: 20140123054441.631096Z#000000#000#000000
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20140123054441Z

当然,包含我的真实姓名并包含由slappasswd.

在这一点上,我不知道为什么它不起作用以及问题是什么。

ldap
  • 1 1 个回答
  • 10055 Views

1 个回答

  • Voted
  1. Best Answer
    Stephen M -on strike-
    2018-02-28T12:49:19+08:002018-02-28T12:49:19+08:00

    因此,问题似乎在于密码以我不知道或丢失的方式加载。我能够有效地重置,首先是 LDAP 管理员密码,然后是使用 ldapmodify 命令的用户帐户密码。我在下面列出了我所做的事情,希望对其他人有所帮助。

    重置 LDAP 管理员密码

    首先,我使用 slappasswd 生成了密码哈希。

    root@laptop:/etc/ldap/slapd.d# slappasswd 
    New password: 
    Re-enter new password: 
    {SSHA}<hash redacted>
    

    接下来,我需要找到设置管理员密码的位置。我这样做了:

    root@laptop:/etc/ldap/slapd.d# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b  cn=config olcRootDN=cn=admin,dc=nodomain dn olcRootDN olcRootPW
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    dn: olcDatabase={1}mdb,cn=config
    olcRootDN: cn=admin,dc=nodomain
    olcRootPW: {SSHA}<hash redacted>
    

    您的 dc 在命令中可能会有所不同,具体取决于您的设置方式。希望我能给出一个比这更好的答案,关于你应该是什么,但我并不完全理解 LDAP。基本上,我所做的一切都在 dc=nodomain 下。您的配置可能会有所不同。

    接下来,我使用 ldapmodify 将管理员密码重置为我知道的密码。请注意,我输入了命令和以“dc:”、“replace:”和“olcRootPw:”开头的行。您需要在最后一行之后放置一个空行,以使 ldapmodify 应用前面的命令。

    root@laptop:/etc/ldap/slapd.d# ldapmodify -Y EXTERNAL -H ldapi:///
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    
    dn: olcDatabase={1}mdb,cn=config
    replace: olcRootPW
    olcRootPW: {SSHA}<new hash from slappasswd>
    

    该oldcDatabase值是从ldapsearch命令中提取的,您的值可能与我的不同。如果搜索结果中没有以前的 olcRootPw,您可能需要在上面的修改命令中使用add而不是。replace

    Ctrl-C 结束我们的 ldapmodify 会话。

    现在我有一个我知道的 LDAP 管理员密码,可以继续重置用户帐户。

    重置 LDAP 用户密码

    我使用 slappasswd 为用户密码生成一个新的密码哈希。此命令对于两次密码重置都是相同的。

    root@laptop:/etc/ldap/slapd.d# slappasswd 
    New password: 
    Re-enter new password: 
    {SSHA}<hash redacted>
    

    接下来,我运行了 ldapmodify 命令,但这次有点不同:

    ldapmodify -H ldapi:/// -D "cn=admin,dc=nodomain" -W
    

    该-D选项告诉 LDAP 我以管理员身份运行(或 -D 后引号中的任何人)。当然,您的dc价值可能会有所不同。该-W选项告诉 LDAP 提示我输入管理员密码。

    输入 LDAP 管理员密码(我在上面重置)后,我给出了设置用户密码的命令。这是我跑的:

    dn: uid=smm,ou=People,dc=nodomain
    add: userPassword
    userPassword: {SSHA}<new password hash>
    

    第一行是 dn,用于指定哪个用户需要重置密码。add如果未设置 userPassword,则第二行是命令,如果replace已设置 userPassword,则为命令。第三行是 LDAP 应该使用的新密码哈希。在第三行之后输入一个空行,告诉 ldapmodify 您已完成输入命令并且它应该运行它。希望你得到如下结果:

    modifying entry "uid=smm,ou=People,dc=nodomain"
    

    现在我也为我的用户设置了一个新密码。

    • 2

相关问题

  • Cygwin sshd 和 LDAP 身份验证

  • 从 OpenLDAP 检索操作属性

  • 为 Mac 网络使用 Linux 和 Open LDAP

  • 使用LDAP服务器身份验证的Linux中单个用户的多个登录名

  • 使用 smbldap 管理用户/组的 Web 前端

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve