389-DS目录服务器CRUD操作指南
一、LDAP客户端命令工具
# 安装openldap-clients后可用以下命令
ldapsearch:查询目录树中的条目记录
ldapadd:基于LDIF格式添加新条目
ldapdelete:删除目录树中的条目
ldapmodify:修改现有条目属性
ldapwhoami:验证用户身份
ldapmodrdn:重命名DN条目
ldapcompare:比较DN与属性值
ldappasswd:重置用户密码
slaptest:验证服务配置文件
slapindex:生成索引提升查询性能
slapcat:将条目导出为LDIF格式
二、导入示例数据
1.准备示例文件
[root@dir-server ~]# rpm -qf /usr/share/dirsrv/data/Example.ldif
389-ds-base-1.3.10.2-15.el7_9.x86_64
[root@dir-server ~]# cp /usr/share/dirsrv/data/Example.ldif .
[root@dir-server ~]# sed -i 's/dc=example/dc=dir-server, dc=example/g' Example.ldif
2.通过管理控制台访问目录树
3.在控制台中选择数据导入功能
4.选择示例文件,勾选"Continue on error"选项后确认
5.检查导入结果,确认用户条目已成功创建
三、新增条目
使用ldapadd命令
[root@dir-server ~]# ldapsearch -x "(uid=existinguser)" > newuser.ldif
[root@dir-server ~]# vim newuser.ldif
dn: uid=anewuser,ou=People,dc=dir-server,dc=example,dc=com
givenName: Alice
telephoneNumber: +86 10 88888888
sn: Wang
ou: Engineering
ou: People
l: Beijing
manager: uid=manager1,ou=People,dc=dir-server,dc=example,dc=com
roomNumber: 1201
mail: alice.wang@example.com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: anewuser
cn: Alice Wang
[root@dir-server ~]# ldapadd -x -f newuser.ldif
adding new entry "uid=anewuser,ou=People,dc=dir-server,dc=example,dc=com"
ldap_add: Insufficient access (50)
[root@dir-server ~]# ldapadd -x -c -f newuser.ldif -W
Enter LDAP Password:
adding new entry "uid=anewuser,ou=People,dc=dir-server,dc=example,dc=com"
[root@dir-server ~]# ldapsearch -x "(uid=anewuser)" -LLL
dn: uid=anewuser,ou=People,dc=dir-server,dc=example,dc=com
givenName: Alice
...
四、删除操作
ldapdelete命令用法
1.直接删除
[root@dir-server ~]# ldapdelete -x -W uid=anewuser,ou=People,dc=dir-server,dc=example,dc=com
Enter LDAP Password:
[root@dir-server ~]# ldapsearch -x "(uid=anewuser)" -LLL
2.批量删除
[root@dir-server ~]# cat remove.ldif
uid=user1,ou=People,dc=dir-server,dc=example,dc=com
uid=user2,ou=People,dc=dir-server,dc=example,dc=com
[root@dir-server ~]# ldapdelete -x -W -f remove.ldif
五、修改操作
ldapmodify命令详解
[root@dir-server ~]# vim update.ldif
dn: uid=anewuser,ou=People,dc=dir-server,dc=example,dc=com
changetype: modify
replace: roomNumber
roomNumber: 2508
-
replace: l
l: Shanghai
-
delete: telephoneNumber
-
add: postalcode
postalcode: 200000
-
[root@dir-server ~]# ldapmodify -x -f update.ldif -W
[root@dir-server ~]# ldapsearch -x "(uid=anewuser)" -LLL
六、查询操作
ldapsearch命令
1.匿名查询
[root@dir-server ~]# ldapsearch -h dir-server.example.com -b ou=people,dc=dir-server,dc=example,dc=com -x
2.认证查询
[root@dir-server ~]# ldapsearch -h dir-server.example.com -b ou=people,dc=dir-server,dc=example,dc=com -x -D "cn=Directory Manager" -W
3.属性过滤
[root@dir-server ~]# ldapsearch -x -LLL 'uid=testuser' cn gidNumber
简化配置
[root@dir-server ~]# vim /etc/openldap/ldap.conf
BASE dc=dir-server,dc=example,dc=com
URI ldap://dir-server.example.com
[root@dir-server ~]# vim ~/.ldaprc
BINDDN cn=Directory Manager
高级查询示例
ldapsearch -x -D "cn=Directory Manager" -W -L
ldapsearch -x "(uid=john)" -L
ldapsearch -x "(uid=john)" -LLL mail telephoneNumber
ldapsearch -x "(uid=john*)" -LLL mail
ldapsearch -x "(!(age>=18))" -LLL mail
ldapsearch -x "(&(age=18)(gender=male))" -LLL mail
ldapsearch -x "(|(uid=john)(uid=jane))" -LLL mail
转义字符:
* \2A
( \28
) \29
\ \5c
空值 \00