LDAP学习笔记之二:389-DS(RHDS) 增删改查基本操作

一、OpenLDAP命令汇总及常用参数

# 以下命令需要安装openldap-clients包
ldapsearch:搜索 OpenLDAP 目录树条目。 ldapadd:通过 LDIF 格式,添加目录树条目。 ldapdelete:删除 OpenLDAP 目录树条目。 ldapmodify:修改 OpenLDAP 目录树条目。 ldapwhoami:效验 OpenLDAP 用户的身份。 ldapmodrdn:判断 OpenLDAP 目录树 DN 条目。 ldapcompare:判断 DN 值和指定参数值是否属于同一个条目。 ldappasswd:修改 OpenLDAP 目录树用户条目实现密码重置,建议加上-S参数自定义密码,否则会随机生产一个密码,和系统PAM建立合理的关系后可以使用系统的passwd命令修改(建议)。 slaptest:验证 slapd.conf 文件或 cn=配置目录。 slapindex:创建 OpenLDAP 目录树索引,提供查询效率。 slapcat:将数据条目转换为 OpenLDAP 的 LDIF 文件

二、导入样例数据

1.修改样例文件

[root@ldap-server1 ~]# rpm -qf /usr/share/dirsrv/data/Example.ldif
389-ds-base-1.3.10.2-15.el7_9.x86_64
[root@ldap-server1 ~]# cp /usr/share/dirsrv/data/Example.ldif .
[root@ldap-server1 ~]# sed -i 's/dc=example/dc=ldap-server1, dc=example/g' Example.ldif   #修改样例文件中服务的DN,根据实际情况修改 

2.登录console,打开目录树

 3.选择导入数据

 4.选择样例文件,务必点击Continue on error选项,并点击ok

5.验证导入结果,可以看到新增了很多用户

四、新增

ldapadd

[root@ldap-server1 ~]# ldapsearch -x "(uid=jvedder)" > blues.ldif #生成新用户的ldif文件,从另一个用户生成即可
[root@ldap-server1 ~]# vim blues.ldif  #简单修改
dn: uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com
givenName: Elwood
telephoneNumber: +1 408 555 4668
sn: Blues
ou: Product Development
ou: People
l: Chicago
manager: uid=bparker,ou=People,dc=ldap-server1,dc=example,dc=com
roomNumber: 3445
mail: jvedder@example.com
facsimileTelephoneNumber: +1 408 555 0111
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: eblues
cn: Elwood Blues
[root@ldap-server1 ~]# ldapadd -x -f blues.ldif #添加会报错,提示匿名用户没有权限
adding new entry "uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com"
ldap_add: Insufficient access (50)
	additional info: Insufficient 'add' privilege to add the entry 'uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com'.

[root@ldap-server1 ~]# ldapadd -x -c -f blues.ldif  -W  #指定用户,这里用的是~/.ldaprc中的用户,-c是当出现报错是继续执行,等同于上面导入用户时Continue on error选项
Enter LDAP Password: 
adding new entry "uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com"

[root@ldap-server1 ~]# ldapsearch -x "(uid=eblues)" -LLL         #查询刚刚新增的用户信息
dn: uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com
givenName: Elwood
telephoneNumber: +1 408 555 4668
......

五、删除操作

ldapdelete 

1.命令行删除
[root@ldap-server1 ~]# ldapdelete -x -W uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com 
Enter LDAP Password: 
[root@ldap-server1 ~]# ldapsearch -x "(uid=eblues)" -LLL
2.文件删除
[root@ldap-server1 ~]# cat delete.ldif
uid=scarter,ou=People,dc=ldap-server1,dc=example,dc=com
uid=tmorris,ou=People,dc=ldap-server1,dc=example,dc=com
[root@ldap-server1 ~]# ldapdelete -x -W -f delete.ldif
[root@ldap-server1 ~]# ldapsearch -x "(uid=scarter)" -LLL

六、修改操作

ldapmodify:修改

[root@ldap-server1 ~]# vim blues-modify.ldif  #创建需要修改的ldif文件
dn: uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com   #指定需要修改的条目
changetype: modify     #指定变更的类型为修改
replace: roomNumber    #修改类型的替换操作 即替换该条目的roomNumber属性
roomNumber: 8888
-
replace: l           #多个修改操作使用-隔离
l: Belvery Hills
-
delete: facsimileTelephoneNumber  #删除某个属性
-
add: postalcode         #添加某个属性,具体熟悉可以在控制台中查看用户的高级选项中查看
postalcode: 10086
-
[root@ldap-server1 ~]# ldapmodify -x -f blues-modify.ldif -W
[root@ldap-server1 ~]# ldapsearch -x "(uid=eblues)" -LLL

七、查询操作

ldapsearch:搜索

 

1.匿名查询
[root@ldap-server1 ~]# ldapsearch -h ldap-server1.example.com -b ou=people,dc=ldap-server1,dc=example,dc=com -x # -h指定服务的IP地址或在主机名称 -b 指定从哪个容器查询,即从哪里开始查询  -x 使用用户名密码方式验证,不指定用户和密码表示使用匿名用过2.指定用户查询

2.指定用户查询
[root@ldap-server1 ~]# ldapsearch -h ldap-server1.example.com -b ou=people,dc=ldap-server1,dc=example,dc=com -x -D "cn=Directory Manager" -W # -D 指定用户 -W 在交互式命令行中输入密码

3.添加过滤参数
[root@ldap-server1 ~]# ldapsearch -x -LLL 'uid=ldap1' cn gidNumber #过滤uid=ldap1的条目,并获取其中cn gidNumber字段

 

简化命令行搜索  

[root@ldap-server1 ~]# vim /etc/openldap/ldap.conf 
BASE    dc=ldap-server1,dc=example,dc=com #等同于 -b
URI     ldap://ldap-server1.example.com  #等同于 -h 

[root@ldap-server1 ~]# vim ~/.ldaprc
BINDDN cn=Directory Manager  #等同于 -D   

其他常用搜索命令

ldapsearch -x -D "cn=Directory Manager" -W -L  #-L以精简模式显示,可以有三个LLL
ldapsearch -x "(uid=jyu)" -L  #查询uid等于jyu的用户信息
ldapsearch -x "(uid=jyu)"  -LLL mail telephoneNumber   #查看uid等于jyu的mail和电话信息
ldapsearch -x "(uid=jyu*)" -LLL mail    #模糊查询
ldapsearch -x "(!(age>=18))"  -LLL mail   #可以对数值进行比较,!为取反
ldapsearch -x "(&(age=18)(gender=male))"  -LLL mail   #可以AND查询多个条件
ldapsearch -x "(|(uid=jyu)(uid=lyf))"  -LLL mail   #或多个查询条件
 
以下为禁止搜索的字符,如果需要查询需要转移,或在使用对应的ASCII码:
*       \2A
(       \28
)       \29
\       \5c
(空)    \00

posted @ 2022-03-23 00:16  百衲本  阅读(1508)  评论(0编辑  收藏  举报
cnblogs_post_body { color: black; font: 0.875em/1.5em "微软雅黑" , "PTSans" , "Arial" ,sans-serif; font-size: 15px; } cnblogs_post_body h1 { text-align:center; background: #333366; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 23px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h2 { text-align:center; background: #006699; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 20px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h3 { background: #2B6695; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 18px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } 回到顶部 博客侧边栏 回到顶部 页首代码 回到顶部 页脚代码