如何在 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 选项,但在更改用户密码时通常情况下是没有旧密码的。如果您没有旧密码,可以将其省略。

例如,如果您的 LDAP 服务器的 rootDN 是 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 管理员密码,您需要在 LDAP 系统服务器上具有 root 或 sudo 访问权限才能重置密码。请登录服务器开始操作。

查找当前的 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 账户和密码。它还会告诉您定义了这些信息的配置数据库。我们还将这些信息写入了我们的家目录下的一个文件中,以便在获得新密码哈希后进行修改:

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

系统会提示您输入并确认您想要使用的新密码。生成的哈希值将追加到我们的文件末尾。

在配置 DIT 中更改密码

现在,我们可以编辑文件以构建一个有效的 LDIF 命令来更改密码。打开我们一直在写入的文件:

nano ~/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。它应该看起来像这样:

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

现在,删除 olcRootPW 行中的哈希值,并用您在下面生成的哈希值替换它。删除任何多余的行。现在它应该看起来像这样:

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 中更改管理员密码。

在普通 DIT 中更改密码

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

再次打开 LDIF 文件:

nano ~/newpasswd.ldif

dn: 行中的值替换为您之前注释掉的 RootDN 值。这个条目是我们密码更改的新目标。我们还需要将 olcRootPW两个出现替换为 userPassword,以便我们修改正确的值。完成后,LDIF 文件应如下所示:

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

保存并关闭文件。

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

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

系统会提示您输入在配置 DIT 中设置的新密码。认证成功后,密码将被更改,只留下新密码用于认证目的。

结论

LDAP 通常用于存储帐户信息,因此了解如何正确管理密码非常重要。大多数情况下,这个过程相对简单,但对于更复杂的操作,您仍然应该能够通过一些努力修改密码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/809138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL进阶一

目录 1.使用环境 2.条件判断 2.1.case when 2.2.if 3.窗口函数 3.1.排序函数 3.2.聚合函数 ​​​​​​​3.3.partiton by ​​​​​​​3.4.order by 4.待续 1.使用环境 数据库:MySQL 8.0.30 客户端:Navicat 15.0.12 2.条件判断 2.1.ca…

手机银行客户端框架之EMAS介绍

EMAS简介 阿里巴巴应用研发平台(Enterprise Mobile Application Studio,简称EMAS),是面向全端场景(移动App、H5应用、小程序、Web应用、PC应用等)的一站式应用研发平台。EMAS基于广泛的云原生技术&#xf…

5G智慧港口简介(一)

引言 港口作为交通运输的枢纽,在促进国际贸易和地区发展中起着举足轻重的作用,全球贸易中约 90% 的贸易由海运业承载,作业效率对于港口至关重要。在“工业 4.0”、“互联网 +”大发展的时代背景下,港口也在进行数字化、全自动的转型升级。随着全球 5G 技术浪潮的到来,华为…

Django域名根目录文件验证

以文件 MP_verify_QtVCdC7027HW9cjA.txt 为例 在Django项目中,为了让特定文件如MP_verify_QtVCdC7027HW9cjA.txt能够被访问,你需要将文件放置在Django项目的某个位置,并确保在URL配置中有相应的路由指向该文件。一种简单的方法是将其放置在你…

用国内版Devin:DevOpsGPT开发一个简易官网

前言: 世界上第一个AI程序员Devin想必已经给大家带来了不小的震撼,这种L4级的技术也许已经昭示着AGI离我们或许真的不远了。 这里先给大家普及一个概念: L4是谷歌对AGI划分的第四个等级,把代码丢给 AI 改这个是 L1 或者 L2 级别的…

K8S之Kubelet

在Kubernetes集群中,在每个Node(又称为Minion)上都会启动一个Kubelet服务进程。该进程用于处理Master下发到本节点的任务,管理Pod及Pod中的容器。每个Kubelet进程都会在API Server上注册节点自身的信息,定期向Master汇…

【精品PPT】智慧路灯大数据平台整体建设实施方案(免费下载)

1、知识星球下载: 如需下载完整PPTX可编辑源文件,请前往星球获取:https://t.zsxq.com/19QeHVt8y 2、免费领取步骤: 【1】关注公众号 方案驿站 【2】私信发送 【智慧路灯大数据平台】 【3】获取本方案PDF下载链接,直…

实战项目——智慧社区(三)之 门禁管理

1、人脸识别 实现思路 ①查询出所有的小区信息,下拉列表显示,用于后续判断人脸信息是否与所选小区匹配 ②人脸识别:调用腾讯人脸识别的API接口,首先判断传入图片是否为一张人脸;其次将这张人脸去服务器的人员库进行…

【简单讲解下WebView的使用与后退键处理】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

PDF文件内容可以转成word版本吗?答案是肯定的 PDF转word的方法

一,PDF转Word的必要性 随着信息技术的飞速发展,文档的格式和转换成为了我们日常生活和工作中不可避免的一部分。其中,PDF转Word的需求尤为突出。PDF作为一种跨平台的文档格式,具有阅读效果好、不易被篡改等优点,但在编…

Ubuntu18.04系统定时任务教程

在Ubuntu 18.04系统中,您可以通过以下步骤来设置定时任务,每10分钟执行一次,从某一个网站获取txt文本内容并清空root/1.txt和root/2.txt文件后再保存新内容: 安装curl(如果尚未安装): 由于您需要从URL获取…

Swing客户端对接WukongIM--参考androidsdk,改写swing版本的悟空IMsdk。

前言 目前需要考察一些iot设备用信息服务器,悟空IM似乎也满足需要,故此文将尝试搬运一下androidsdk到 swing身上。 过程 暂略[苦干中]

MATLAB算法实战应用案例精讲-【数模应用】K折交叉验证

目录 前言 几个高频面试题目 K到底该取多少?为什么大部分人都要取10? 算法原理

基于Springcloud可视化项目:智慧工地可视化大数据云平台源码

目录 技术架构 智慧工地系统在实际推行过程中遇到的问题 智慧工地接纳程度较低 基础设施条件有待完善 智慧工地整体生态尚未完善 智慧工地平台各功能模块 施工过程工信程息信管息理管模理块 人员管理模块 生产管理模块 技术管理模块 质量管理模块 安全管理模块 绿…

【病毒分析】DevicData勒索病毒分析

1.背景 1.1来源 近期,Solar团队收到某医疗单位的援助请求,该公司的计算机受到了某勒索病毒的侵害,所有的文件被加密并且添加了.DevicData-P-470b1abd后缀,我司人员现场取证进行排查并提取加密器,本文是对于加密器的分析。 2.恶…

1.Godot引擎|场景|节点|GDS|介绍

Godot介绍 Godot是一款游戏引擎 可以通过在steam商城免费下载 初学者和编程基础稍差的推荐学习使用GDScript,和python有些相似 Godot节点 Godot的开发思想——围绕节点 节点的特征与优势 最常用基本的开发组件大部分都具有具体的功能,如图片&#xf…

ubuntu 应用程序设置 开机自启动

1. 通过.desktop方式 autostart 中.desktop 配置文件 1.1 用户级自启动 登录后才可以启动服务。 可视化配置:在ubuntu自带的可视化程序来配置,就是StartupApplications,它在启动台中可以找到。 在ubuntu下目录是 ~/.config/autostart 添…

大数据架构的演变与多种大数据架构类型说明——解读大数据架构(一)

文章目录 前言数据架构的演变关系型数仓数据湖现代数仓数据网络数据湖仓数据网格 前言 在搭建和使用大数据组件前,预先投入时间设计和构建正确的数据架构绝对至关重要。如果在前期没有设计正确的数据架构就开始实施方案,在后期想更改架构设计是十分困难…

Java基础_16LikedList[开发不用】_Object类_Set集合

昨天的内容回顾 List接口下面的方法:add(Object o); 添加数据到集合容器中add(int index, Object o);在指定下标下面&#xff0c;添加数据到集合容器中addAll(Collection<? extends E> e);addAll(int index, Collection<? extends E> e);remove(Object o);remov…

12-pyspark的RDD算子注意事项总结

目录 相近算子异同总结相近变换算子异同foreach和foreachPartitionfold和reducecoalesce和repatition 相近动作算子异同cache和persist 算子注意事项需要注意的变换算子需要注意的动作算子 PySpark实战笔记系列第三篇 10-用PySpark建立第一个Spark RDD(PySpark实战笔记系列第…