基本操作
1、实验环境:
IP:172.16.8.48,账号:apps/xxxxxxx
操作文件目录:
/app/opendj/ldif/
为了操作可追溯,所有的修改操作都通过写入文件再导入文件方式进行操作。
ldif文件需要特别注意格式问题,后边不能有空格,前边是属性名称(字段名称),跟着冒号(: )做分隔,冒号后边需要有一个空格,后边才是值。
2、增、删、改 操作
2.1 新增操作:
vi test_add.ldif
dn: uid=998test,ou=People,o=xxx.com,o=isp
changetype: add
objectClass: top
objectClass: xxx-person
objectClass: inetorgperson
objectClass: OrganizationalPerson
objectClass: person
cn: 2st
sn: 2st
departmentNumber: xxx1350746
description: 2hst
displayName: 2食堂
mail: 2st@xxx.com
xxx-adlocation: CN
uid: 998test
o: 没有归属事业部
#保存后执行:
/app/opendj/bin/ldapmodify --hostname 127.0.0.1 --port 1389 --bindDN “cn=Directory Manager” --bindPassword --continueOnError --filename test_add.ldif
#这样即可新增一条uid为:998test 的条目,格式说明如下:
dn: uid=998test,ou=People,o=xxx.com,o=isp #这个是条目的ID ,这是一个倒置的树形结构,uid 详单与叶子,上一级是People,最上级是isp。
changetype: add #这个是操作类型,add是新增,modify 修改, delete 删除。
objectClass: top #类属性,别的条目有那些,这个也需要写那些,必须写全
objectClass: xxx-person
objectClass: inetorgperson
objectClass: OrganizationalPerson
objectClass: person
cn: 2st #下边的几个都是属性,有多少配置多少,需要一个个写全。我这测试就没写完了,改天再完善。
sn: 2st
departmentNumber: xxx135074
description: 2hst
displayName: 2食堂
mail: 2st@xxx.com
xxx-adlocation: CN
uid: 998test
2.2 修改操作
2.2.1 修改操作-添加属性值
vi test_update_add.ldif
dn: uid=998test,ou=People,o=xxx.com,o=isp
changetype: modify
add: manager
manager: uid=testuser999,ou=People,o=xxx.com,o=isp
#保存后执行:
/app/opendj/bin/ldapmodify --hostname 127.0.0.1 --port 1389 --bindDN “cn=Directory Manager” --bindPassword --continueOnError --filename test_update_add.ldif
#如上新增一条属性manager,格式如下:
dn: uid=998test,ou=People,o=xxx.com,o=isp #需要修改的条目
changetype: modify #变更类型,修改
add: manager #添加属性manager
manager: uid=testuser999,ou=People,o=xxx.com,o=isp #设定属性参数
#写错dn 属性,将isp写成sip ,会出现如下报错。 这有个问题,如果文件中某一行报错,只是报错,其他正常数据会成功插入opendj内。
Processing MODIFY request for uid=999test,ou=People,o=xxx.com,o=sip
MODIFY operation failed
Result Code: 32 (No Such Entry)
Additional Information: Entry uid=999test,ou=People,o=xxx.com,o=sip cannot be modified because no such entry exists in the server
#添加成功:
Processing MODIFY request for uid=999test,ou=People,o=xxx.com,o=isp
MODIFY operation successful for DN uid=999test,ou=People,o=xxx.com,o=isp
#添加的属性值已经存在,会有如下报错:
Processing MODIFY request for uid=999test,ou=People,o=xxx.com,o=isp
MODIFY operation failed
Result Code: 20 (Attribute or Value Exists)
2.2.2 修改操作-修改属性值
vi test_update_update.ldif
dn: uid=998test,ou=People,o=xxx.com,o=isp
changetype: modify
replace: mail
mail: 998test@xxx.com
#文件说明
dn: uid=998test,ou=People,o=xxx.com,o=isp #需要修改的条目
changetype: modify #操作类型,修改
replace: mail #修改的属性名称
mail: 998test@xxx.com #修改后的属性值, 跟sql里边的update一样
2.2.3 修改操作-删除属性
vi test_update_delete.ldif
dn: uid=998test,ou=People,o=xxx.com,o=isp
changetype: modify
delete: displayName
#文件说明:
dn: uid=998test,ou=People,o=xxx.com,o=isp #需要修改的条目
changetype: modify #操作类型为修改
delete: displayName #被删除的属性, 这个就相当于将这个字段删掉
2.2.4 修改操作-删除指定属性值
vi test_update_deletevalue.ldif
dn: uid=998test,ou=People,o=xxx.com,o=isp
changetype: modify
delete: description
description: 2hst
#文件说明
dn: uid=998test,ou=People,o=xxx.com,o=isp #需要修改的条目
changetype: modify #操作类型为修改
delete: description #删除的属性名称为:description
description: 2hst #设置被删除的属性值需要是 2hst
#这我将重新录入了,将2hst改为了3hst,然后再次执行上边的文件(里边的内容还是 description: 2hst )
Processing MODIFY request for uid=998test,ou=People,o=xxx.com,o=isp
MODIFY operation failed
Result Code: 16 (No Such Attribute)
Additional Information: Entry uid=998test,ou=People,o=xxx.com,o=isp cannot be modified because the attempt to update attribute description would have removed one or more values from the attribute that were not present: 2hst
有多个属性需要变更,可以用“-”进行分隔
vi test_update_update.ldif
dn: uid=998test,ou=People,o=xxx.com,o=isp
changetype: modify
replace: mail
mail: 998test@xxx.com
-
replace: cn
cn: 998test
-
replace: outname
outname: 测试账号
2.3 删除操作
vi test_delete.ldif
dn: uid=998test,ou=People,o=xxx.com,o=isp
changetype: delete
#说明,将uid=998test 的这个条目删除掉。
#重复执行,已经删除过的再次发起会出现如下报错
Processing DELETE request for uid=998test,ou=People,o=xxx.com,o=isp
DELETE operation failed
Result Code: 32 (No Such Entry)
Additional Information: Entry uid=998test,ou=People,o=xxx.com,o=isp does not exist in the Directory Server
Matched DN: ou=People,o=xxx.com,o=isp
3、查询
/app/opendj/bin/ldifsearch -? #帮助
这推荐是到: http://directory.apache.org/ 下载 Apache Directory Studio 这个工具来进行管理
或者使用:ldifsearch 命令
/app/opendj/bin/ldifsearch -V #查看OpenDJ 的版本
3、LDAP查询等命令的条件写法
条件
等于、大于等于、小于等于、且、或、非、
(uid=admin1) #等于
(createtimeatamp>=20190701000000Z) #大于等于
(createtimestamp<=20180101000000Z) #小于等于
(&(uid=admin1)(xxx-usertype=0)) # & 且
(|(uid=admin1)(uid=admin2)) # | 或
(!(xxx-usertype=0)) # ! 非
案例查询: