OpenLDAP 系列3 --- ldapadd, ldapmodify

一、概要

1. 承上启下

Open LDAP 系列

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

posted @ 2022-12-04 15:16  白马黑衣  阅读(1797)  评论(0编辑  收藏  举报