LDAP用户管理,实现客户端增删改查

LDAP简称对应

o– organization(组织-公司)
ou – organization unit(组织单元/部门)
c - countryName(国家)
dc - domainComponent(域名组件)
sn – suer name(真实名称)
cn - common name(常用名称)
dn - distinguished name(专有名称)

查看用户列表

ldapsearch -x -b "ou=People,dc=163,dc=com" | grep dn

这一步需要注意:
如果是在客户端查询,需要加入-H ldap://192.168.x.x参数
如果是通过ldif导入的系统用户,其DN是uid=UserNmae,ou=People,dc=163,dc=com
而如果通过phpldapadmin或者LAM等第三方工具建立的用户,其DN是cn=UserNmae,ou=People,dc=163,dc=com
如果使用ldapsearch或者ldappasswd命令查询/修改用户信息的时候,请注意这一点

查询单个用户信息

ldapsearch -x -b "用户DN"    #根据上面的用户列表,找到用户的DN
ldapsearch -x -b "uid=ldapuser8,ou=People,dc=163,dc=com"

查看组列表

ldapsearch -x -b "ou=Group,dc=163,dc=com" | grep dn

添加用户
待完成

ldapadd -x -D "cn=admin,dc=163,dc=com" -W -f passwd_ldapuser1.ldif   #回车后需要输入密码
ldapadd -x -D "cn=admin,dc=163,dc=com" -W PASSWORD -f passwd_ldapuser1.ldif   #无需输入密码

用户自行修改密码

ldappasswd -H ldap://Server_IP -x -D "cn=UserName,ou=People,dc=163,dc=com" -w OldPasswd -S            #回车后会提示输入新密码
ldappasswd -H ldap://Server_IP -x -D "cn=UserName,ou=People,dc=163,dc=com" -w OldPasswd -s NewPasswd  #直接在命令里指定新密码

注意,这一步可能出现如下错误:
Result: Insufficient access (50)说明普通用户没有修改权限
ldap_bind: Invalid credentials (49)说明凭证无效,请参考这篇文章

使用管理员修改普通用户的密码

ldappasswd -H ldap://Server_IP -x -D "cn=admin,dc=163,dc=com" -W "uid=User1,ou=People,dc=163,dc=com" -S

回车以后,New password是指输入User1的密码,而Enter LDAP Password才应该输入管理员密码
这里极有可能遇到ldap_bind: Invalid credentials (49)错误,请参考这篇文章
也可以一气呵成

ldappasswd -x -D "cn=admin,dc=115,dc=com" -w Admin_PASS "uid=User1,ou=People,dc=115,dc=com" -s New_PASS

删除用户

ldapdelete -x -D "cn=admin,dc=163,dc=com" -W "uid=用户名,ou=People,dc=163,dc=com"

提示:删除用户时,并不会删除同名的组,请记得删除同名组

删除组

ldapdelete -x -D "cn=admin,dc=163,dc=com" -W "cn=组名,ou=Group,dc=163,dc=com" 

LDAP用户管理,实现客户端增删改查》上有2条评论

  1. hello,朱哥,我重新提下问题
    公司目前用的内部账号管理是AD+LDAP,账号的添加和删除都有自动化脚本,但是只包括简单的账号添加和删除以及邮件通知,每次删除用户还需到管理后台将账号从组内剔除,所以我想优化脚本,添加自动删除LDAP组成员的功能。简单来说,就是使用用命令将组内成员从组内剔除。
    希望朱哥能帮忙解答一下IT小老弟的疑问,不胜感激。

liangzhang进行回复 取消回复

电子邮件地址不会被公开。