OpenLDAP 系列3 --- ldapadd, ldapmodify
一、概要
1. 承上启下
2. 简介
ldapadd, ldapmodify是两个最常用的操作LDAP Entry的命令,之所以把它们两个放在一起是因为ldapadd其实是对ldapmodify的一种调用,当调用ldapadd的时候其实是调用ldaomodify -a命令。
ldapmodify命令是一个Shell接口,它背后调用了ldap_add_ext(), ldap_modify_ext(), ldap_delete_ext()和ldap_rename()等方法。
二、语法
1. ldapadd
ldapadd [-V V] [-d debuglevel] [-n ] [-v ] [-a ] [-c ] [-f file] [-S attribute] [-z sizelimit] [-M M] [-x ] [-D bindn] [-W ] [-w passwd] [-y psswdfile] [-H ldapurl] [-h ldaphost] [-p ldapport] [-P {2|3}] [-e [!]ext[=extparam]] [-E [!]ext[=extparam]] [-o opt[=outparam]] [-O security-properties] [-I ] [-Q ] [-N ] [-U authcid] [-R realm] [-X authzip] [-Y mech] [-Z Z]
2. ldapmodify
ldapmodify [-V V] [-d debuglevel] [-n ] [-v ] [-a ] [-c ] [-f file] [-S attribute] [-z sizelimit] [-M M] [-x ] [-D bindn] [-W ] [-w passwd] [-y psswdfile] [-H ldapurl] [-h ldaphost] [-p ldapport] [-P {2|3}] [-e [!]ext[=extparam]] [-E [!]ext[=extparam]] [-o opt[=outparam]] [-O security-properties] [-I ] [-Q ] [-N ] [-U authcid] [-R realm] [-X authzip] [-Y mech] [-Z Z]
3. 参数
需要注意的是这些参数大小写敏感,且对于所有ldap命令是公用的。
(1) -V
版本号信息。
(2) -d debuglevel
设置ldap的调试等级。
(3) -n
展示那些需要执行但事实上并未执行的查询,需要与-v参数配合使用。
(4) -v
在verbose模式下运行,会输出调试信息。
(5) -a
添加新的条目(entry)。对于ldapmodify命令来说,默认是修改已经存在的条目;对于ldapadd命令来讲,这个是参数是默认携带的。
(6) -c
需要与-f同时使用,此时如果有异常会被抛出,但是不会影响ldapsearch继续执行。默认情况下,当有异常时会停止执行命令并抛出异常。
(7) -f file
从指定文件中读取需要修改的条目信息。
(8) -S attributte
根据指定的属性进行排序,如果属性是空字符串"",则根据DN(Distinguished Name)来排序,默认情况下不进行排序。
(9) -M[M]
开启DSA IT控制。
(10) -x
使用简单验证来替代SASL。
(11) -D binddn
使用指定的DN(Distinguished Name)来绑定LDAP目录,对于SASL绑定,服务器会忽略该值。
(12) -W
开启简单认证(Simple authentication),可以在命令行中避免输入密码。
(13) -w passwd
使用指定的密码来进行简单认证登录。
(14) -y passwdfile
使用指定的密码文件来进行简单认证登录。
(15) -H ldapuri
指定LDAP服务器的URI,如果有多个URI可使用空格或者逗号分割。URI的格式为:
protocol/host/port
(16) -h ldaphost
指定LDAP服务运行的host,在指定-H参数的情况下会失效。
(17) -p ldapport
指定LDAP服务监听的TCP端口号,在指定-H参数的情况下会失效。
(18) -P {2|3}
指定LDAP协议的版本号。
(19) -o opt[=optparam]
指定通用的options,例如
nettimeout=<timeout> (以秒为单位,或"none","max")
(20) -O security-properties
指定SASL安全属性。
(21) -I
开启SASL交互模式。
(22) -N
不使用反向域名解析来解析SASL的域名。
(23) -U authcid
为绑定SASL指定authentication ID。
(24) -R realm
为绑定SASL指定realm。
(25) -X authzid
为绑定SASL指定authentication ID,格式为dn:<distinguished name> or u:<username>。
(26) -Y mech
指定用于验证的SASL模式。
三、示例
1. 使用ldapmodify命令执行增删改
假设文件/tmp/entrymods包含以下内容:
dn: cn=Modify Me,dc=example,dc=com changetype: modify replace: mail mail: modme@example.com - add: title title: Grand Poobah - add: jpegPhoto jpegPhoto:< file:///tmp/modme.jpeg - delete: description
执行命令:
ldapmodify -f /tmp/entrymods
那么对于"cn=Modify Me,dc=example,dc=com"这条记录,会进行以下操作:
(1) 将属性"mail"的值改为“modme@example.com”;
(2) 添加属性"title",值为"Grand Poobah";
(3) 添加属性"jpegPhoto",值为"/tmp/modme.jpeg";
(4) 删除属性“description”。
2. 使用ldapadd执行添加条目
假设文件/tmp/newentry包含以下内容:
dn: cn=Barbara Jensen,dc=example,dc=com objectClass: person cn: Barbara Jensen cn: Babs Jensen sn: Jensen title: the world's most famous mythical manager mail: bjensen@example.com uid: bjensen
执行命令:
ldapadd -f /tmp/newentry
将会添加一条新的条目"cn=Barbara Jensen,dc=example,dc=com"。
3. 使用ldapmodify执行删除条目
假设文件/tmp/entrymods包含以下内容:
dn: cn=Barbara Jensen,dc=example,dc=com
changetype: delete
执行命令:
ldapmodify -f /tmp/entrymods
将会删除条目cn=Barbara Jensen,dc=example,dc=com
四、参考
https://www.mkssoftware.com/docs/man1/ldapadd.1.asp
https://www.mkssoftware.com/docs/man1/ldapdelete.1.asp
https://docs.ldap.com/ldap-sdk/docs/tool-usages/ldapsearch.html