我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

openldap存在的核心意义是用户(统一登陆),有了LDAP的用户名和密码,才有后续的各种编程应用。所以,本文将要讲述给openldap使用原生命令,增加新用户,修改密码,以及成员查询的基本方式。

苏南大叔:openldap最佳实践,如何使用原生命令管理ldap用户成员? - 原生命令管理ldap用户
openldap最佳实践,如何使用原生命令管理ldap用户成员?(图5-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验文章。本文测试环境:win10openldap@2.4.32

写在前面

这里主要回顾两篇文章:

本文中涉及到了好几条不同的命令,但是涉及到的命令参数都是一致的。列举如下:

  • -x:使用简单认证方式。
  • -H:指定LDAP服务器的地址和端口。
  • -D:指定用于身份验证的用户DN。
  • -w:指定用户的密码。
  • -b:指定基本搜索DN,即搜索的起点。
  • "(objectClass=inetOrgPerson)":指定要搜索的过滤条件。

添加新用户

初始化组织结构base.ldif文件后,就可以通过users.ldif添加新用户了。参考\etc\ldif\users.ldif文件,创造一个新的文件\etc\ldif\users2.ldif

dn: uid=sunan,ou=People,dc=my-domain,dc=com
cn: ssnn
sn: Hacker
objectClass: person
objectClass: inetOrgPerson
userPassword: sunanpassword

具体的参数意义,这里不做深入探讨。只需要说明一下:

  • dn就是这个用户的唯一标识。
  • objectClass属性可以定义多个,并不会相互覆盖。

苏南大叔:openldap最佳实践,如何使用原生命令管理ldap用户成员? - 添加新用户
openldap最佳实践,如何使用原生命令管理ldap用户成员?(图5-2)

执行命令:

ldapadd.exe -v -x -D "cn=Manager,dc=my-domain,dc=com" -f ..\etc\ldif\users2.ldif -W

修改密码

编辑\etc\ldif\users3.ldif文件:

dn: uid=sunan,ou=People,dc=my-domain,dc=com
changetype: modify
replace: userPassword
userPassword: sunanpassword2

苏南大叔:openldap最佳实践,如何使用原生命令管理ldap用户成员? - 修改密码
openldap最佳实践,如何使用原生命令管理ldap用户成员?(图5-3)

执行命令:

ldapmodify.exe -v -x -D "cn=Manager,dc=my-domain,dc=com" -f ..\etc\ldif\users3.ldif -W

列出用户

ldapsearch -x -D "cn=Manager,dc=my-domain,dc=com" -W -b "dc=my-domain,dc=com" "(objectClass=person)"

苏南大叔:openldap最佳实践,如何使用原生命令管理ldap用户成员? - 查找用户
openldap最佳实践,如何使用原生命令管理ldap用户成员?(图5-4)

本文的例子,返回的数据是:

# extended LDIF
#
# LDAPv3
# base <dc=my-domain,dc=com> with scope subtree
# filter: (objectClass=person)
# requesting: ALL
#

# hacker, People, my-domain.com
dn: uid=hacker,ou=People,dc=my-domain,dc=com
uid: hacker
cn: Sergio
sn: Hacker
objectClass: person
objectClass: top
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
loginShell: /bin/bash
uidNumber: 1561
gidNumber: 10037
gecos: Undergrad
homeDirectory: /home/hacker
mail: info@matear.eu
telephoneNumber: 402-640-2560
o: UNL-City
ou: Arts & Sciences
l: Comp Sci
shadowLastChange: 14333
shadowMax: 99999
shadowWarning: 7
userPassword:: T25lVHdvMjAxMg==

# sunan, People, my-domain.com
dn: uid=sunan,ou=People,dc=my-domain,dc=com
cn: ssnn
sn: Hacker
objectClass: person
objectClass: inetOrgPerson
uid: sunan
userPassword:: c3VuYW5wYXNzd29yZDI=

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

删除用户

准备配置文件,执行命令:

ldapdelete -x -D "cn=Manager,dc=my-domain,dc=com" "uid=sunan,ou=People,dc=my-domain,dc=com" -W

注意这里的删除的用户dn,和最初的添加用户时的dn设置一致。

苏南大叔:openldap最佳实践,如何使用原生命令管理ldap用户成员? - 删除用户
openldap最佳实践,如何使用原生命令管理ldap用户成员?(图5-5)

删除成功的话,没有回显。失败的话,会有失败原因回显。

结语

使用原生命令行模式,对用户成员进行增删改查的基本操作就是这样的。虽然没有列出所有的可能使用情形,就算抛砖引玉了。更多ldap的经验文章,请参考:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   ldap