如何更改OpenLDAP服务器上的账户密码

介绍

LDAP系统通常用于存储用户帐户信息。 事实上,一些最常见的向LDAP进行身份验证的方法涉及存储在LDAP条目中的帐户信息。

无论您的LDAP条目是由外部服务用于帐户信息还是仅用于LDAP特定的授权绑定,密码管理变得非常重要。 在本指南中,我们将讨论如何修改LDAP条目的密码。

更改您自己的用户密码

更改密码的能力由LDAP服务器的访问控制管理。 通常,LDAP配置为允许帐户更改自己的密码。 如果您作为用户知道您以前的密码,这个工作很好。

我们可以使用ldappasswd工具来修改用户帐户密码。 要更改密码,您需要绑定到LDAP用户条目并使用当前密码进行认证。 它遵循与其他OpenLDAP工具相同的一般语法。

为了更改密码,我们必须提供超出常规绑定参数的几个参数。 您应该使用以下选项之一指定旧密码:

  • -a [oldpassword] :本-a标志允许您在命令行上请求的一部分提供旧密码。
  • -A :此标志的一种替代-a标志输入命令时会提示您输入旧密码。
  • -t [oldpasswordfile]该标志可用于代替上述读取一个文件的旧密码。

您还需要使用以下选项之一指定新密码:

  • -s [newpassword] :将-s标志用来在命令行上提供新密码。
  • -S :中的变体-s输入命令时,标志会提示你输入新密码。
  • -T [newpasswordfile]该标志可用于代替上述读取一个文件中的新密码。

使用每个组中的一个选项,以及用于指定服务器位置和绑定条目和密码的常规选项,可以更改LDAP密码。 从技术上讲,OpenLDAP不总是需要旧密码,因为它用于绑定到条目,但其他LDAP实现需要这样做,所以最好是设置。

通常,命令将如下所示:

ldappasswd -H ldap://server_domain_or_IP -x -D "user_dn" -W -A -S

这将连接到指定的LDAP服务器,使用用户DN条目进行身份验证,然后发出一系列提示。 将要求您提供并确认旧密码,新密码,然后您将需要再次提供旧密码才能进行实际绑定。 之后,您的密码将会更改。

因为你将改变你的密码,可能更容易在命令行而不是通过提示输入旧密码。 你可以这样做:

ldappasswd -H ldap://server_domain_or_IP -x -D "user's_dn" -w old_passwd -a old_passwd -S

使用RootDN绑定更改用户的密码

ldappasswd工具还允许您如果需要为LDAP管理员更改其他用户的密码。 从技术上讲,您可以与对该帐户的密码具有写访问权限的任何帐户绑定,但此访问权限通常仅限于rootDN(管理)条目和帐户本身。

要更改其他用户的密码,您需要绑定到具有提升权限的条目,然后指定要更改的条目。 通常,您将绑定到rootDN(如果您需要了解如何找到此帐户,请参阅下一部分)。

基本ldappasswd命令将看起来非常相似,唯一的区别是,你必须指定在命令的最后更改的条目。 您可以使用-a-A选项,如果你有旧密码可用,但这更改用户密码时,往往并非如此。 如果您没有旧密码,请将其关闭。

例如,如果rootdn就为LDAP服务器是cn=admin,dc=example,dc=com ,你希望更改密码对于uid=bob,ou=people,dc=example,dc=com条目,您可以键入:

ldappasswd -H ldap://server_domain_or_IP -x -D "cn=admin,dc=example,dc=com" -W -S "uid=bob,ou=people,dc=example,dc=com"

系统将提示您输入Bob的新密码,然后系统将提示您输入绑定到管理员条目以进行更改所需的密码。

更改RootDN密码

在你已经忘记了LDAP管理密码的情况下,你需要有root或sudo的LDAP系统的服务器上访问复位。 登录到您的服务器以开始使用。

查找当前RootDN信息

首先,你必须找到RootDN帐户和当前的RootDN密码哈希。 这是特别提供cn=config配置DIT。 我们可以通过键入以下内容找到我们要查找的信息:

sudo ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW | tee ~/newpasswd.ldif

这应该返回您的DIT的rootDN帐户和密码。 它还将告诉您配置数据库中这是定义的。 我们还将此信息写入我们的主目录中的文件,以便我们可以修改它一旦我们有新的密码哈希:

RootDN和RootPW用于DIT
dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

哈希新密码

接下来,我们可以使用slappasswd实用哈希新密码。 我们要使用相同的散列那是在olcRootPW我们查询行,用括号中的前缀值指示。 在我们的例子,这是{SSHA}

使用slappasswd实用程序生成的,我们要使用的密码正确的哈希值。 我们将我们的新哈希附加到我们用最后一个命令创建的文件的末尾。 如果使用非root帐户,则需要指定命令的完整路径:

/usr/sbin/slappasswd -h {SSHA} >> ~/newpasswd.ldif

系统将提示您输入并确认要使用的新密码。 哈希值将被附加到文件的结尾。

更改Config DIT中的密码

现在,我们可以编辑该文件以构造有效的LDIF命令来更改密码。 打开我们写给的文件:

nano ~/newpasswd.ldif

它应该看起来像这样:

〜/ newpasswd.ldif
dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

根据LDAP服务器是否具有多个DIT,您可能有多个值。 如果是这样的情况下,使用olcRootDN值找到要修改正确的帐户。 删除其他dnolcRootDNolcRootPW三胞胎,如果有任何。

您确认后,该olcRootDN行,你要修改的帐户是否相符,其注释掉。 下面,我们将添加两行。 第一个应该指定changetype: modify ,第二行应该告诉你正在尝试LDAP replace: olcRootPW 它将如下所示:

〜/ newpasswd.ldif
dn: olcDatabase={1}hdb,cn=config
#olcRootDN: cn=admin,dc=example,dc=com
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

现在,删除的哈希值是在olcRootPW线,并与你产生如下图所示更换。 删除任何无关的线。 它现在应该看起来像这样:

〜/ newpasswd.ldif
dn: olcDatabase={1}hdb,cn=config
#olcRootDN: cn=admin,dc=example,dc=com
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

保存并在完成后关闭文件。

现在,我们可以通过键入以下内容应用更改:

sudo ldapmodify -H ldapi:// -Y EXTERNAL -f ~/newpasswd.ldif

这将改变内部的管理密码cn=config DIT。

更改Normal DIT中的密码

这已更改管理DIT中的条目的密码。 但是,我们仍然需要修改常规DIT中的条目。 目前,旧密码和新密码都有效。 我们可以通过使用我们的新凭据修改常规DIT条目来解决这个问题。

再次打开LDIF文件:

nano ~/newpasswd.ldif

替换值dn:符合你注释掉早些时候的rootdn值。 此条目是我们更改密码的新目标。 我们还需要改变发生olcRootPWuserPassword ,使我们正在修改正确的值。 完成后,LDIF文件应如下所示:

[output ~/newpasswd.ldif]
dn: cn=admin,dc=example,dc=com
changetype: modify
replace: userPassword
userPassword: {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

保存并关闭文件。

现在,我们可以通过使用我们在config DIT中设置的新密码绑定该条目来修改该条目的密码。 您将需要绑定到RootDN条目以执行操作:

ldapmodify -H ldap:// -x -D "cn=admin,dc=example,dc=com" -W -f ~/newpasswd.ldif

将提示您输入在config DIT中设置的新密码。 一旦验证,密码将被更改,仅留下新密码用于验证目的。

结论

LDAP通常用于存储帐户信息,因此了解如何正确管理密码很重要。 大多数时候,进程相对简单,但是对于更密集的操作,您仍然应该能够通过一些工作来修改密码。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏