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