
1 基础知识
1.1 LDIF数据交换格式
1.1.1 基本概念
– 一种标准的纯文本数据交换格式
– 该格式适用于保存LDAP的数据
– 多个逻辑行代表一个对象(也称条目,条目之间使用空行分隔)
– 每个逻辑行代表该对象的某个属性
– 每个对象和属性支持常见的增、删、改、查、重命名操作
– 对象使用专有名称的值作为对象的唯一标识ID
1.1.2 LDAP范例
# cmdschool.org dn: dc=cmdschool,dc=org objectClass: top objectClass: domain dc: cmdschool # Directory Administrators, cmdschool.org dn: cn=Directory Administrators,dc=cmdschool,dc=org objectClass: top objectClass: groupofuniquenames cn: Directory Administrators # Groups, cmdschool.org dn: ou=Groups,dc=cmdschool,dc=org objectClass: top objectClass: organizationalunit ou: Groups
1.1.3 专有名
– 即Distinguished Name的翻译
– DN用于标识唯一的对象,即每个条目的唯一名称
1.1.4 通用名称
– 即Common Name的翻译
– CN用于指定对象的名称,如人名、会议室、食谱名称、职称等等
1.1.5 组织单元
– 即Oranizational Unit的翻译
– OU用于指定对象所属的组织架构或所属分组、分类,概括为归属关系
1.1.6 域组件
– 即Domain Component的翻译
– DC用于定义对象的域,如www.cmdschool.org会表达为DC=www,DC=cmdschool,DC=org
2.1 命令帮助
ldapsearch -h
2.2 使用详解
2.2.1 使用的格式
ldapsearch [options] [filter [attributes...]]
注:
– options,指具体的命令行选项,后面有介绍
– filter,指符合RFC 4515书写规范的LDAP搜索过滤规则
– attributes,空格属性列表(使用空格分隔每个属性)
2.2.2 搜索选项
Search options: -a deref one of never (default), always, search, or find -A retrieve attribute names only (no values) -b basedn base dn for search -c continuous operation mode (do not stop on errors) -E [!][=] search extensions (! indicates criticality) [!]domainScope (domain scope) !dontUseCopy (Don't Use Copy) [!]mv= (RFC 3876 matched values filter) [!]pr=[/prompt|noprompt] (RFC 2696 paged results/prompt) [!]sss=[-]<attr[:OID]>[/[-]<attr[:OID]>...] (RFC 2891 server side sorting) [!]subentries[=true|false] (RFC 3672 subentries) [!]sync=ro[/] (RFC 4533 LDAP Sync refreshOnly) rp[/][/] (refreshAndPersist) [!]vlv=/(//|:) (ldapv3-vlv-09 virtual list views) [!]deref=derefAttr:attr[,...][;derefAttr:attr[,...][;...]] [!][=:] (generic control; no response handling) -f file read operations from `file' -F prefix URL prefix for files (default: file:///tmp/) -l limit time limit (in seconds, or "none" or "max") for search -L print responses in LDIFv1 format -LL print responses in LDIF format without comments -LLL print responses in LDIF format without comments and version -M enable Manage DSA IT control (-MM to make critical) -P version protocol version (default: 3) -s scope one of base, one, sub or children (search scope) -S attr sort the results by attribute `attr' -t write binary values to files in temporary directory -tt write all values to files in temporary directory -T path write files to directory specified by path (default: /tmp) -u include User Friendly entry names in the output -z limit size limit (in entries, or "none" or "max") for search
2.2.1.1 引用别名
参数:-a
作用:指定如何取消引用别名
可选值:never|always|search|find(从不、总是、搜索、查找)
2.2.1.2 只检索属性名称
参数:-A
作用:用于确认条目是否有值,不需要使用属性值
2.2.1.3 基于DN查找
参数:-b
作用:基于DN查找
2.2.1.4 连续操作模式
参数:-c
作用:遇到错误继续往下执行
2.2.1.5 搜索扩展
参数:-E
作用:使用-e指定一般的扩展名,然后使用-E搜索
2.2.1.6 从文件导入操作
参数:-f
作用:从文件导入操作
2.2.1.7 文件的URL前缀
参数:-F prefix
作用:指定文件的URL前缀
默认值:file:///tmp/
2.2.1.8 限制搜索时间
参数:-l
作用:限制搜索时间
可选值:整数值(单位秒)|none|max
1.2.1.9 控制打印格式
参数:
-L
-LL
-LLL
作用:
– 控制打印格式
– 一个L指以LDIFv1格式打印
– 两个L指以LDIF格式打印,节删注解
– 三个L指以LDIF格式打印,节删注解和版本信息
2.2.1.10 指定协议的版本
参数:-P
作用:指定协议的版本
默认值:3
2.2.1.11 指定协议的版本
参数:-P
作用:指定协议的版本
默认值:3
2.2.1.12 指定搜索的范围
参数:-s
作用:指定协议的版本
可选值:base|one|sub|children
2.2.1.13 按某个属性排序
参数:-S
作用:按某个属性排序
2.2.1.14 输出到临时目录的文件
参数:
-t
-tt
作用:
– 一个t表示输出二进制值到临时目录文件
– 两个t表示所有值写到临时目录文件
2.2.1.15 指定输出目录
参数:-T
作用:指定输出目录
默认值:/tmp
2.2.1.16 友好地输出条目
参数:-u
作用:友好的格式输出条目
2.2.1.17 友好地输出条目
参数:-u
作用:友好的格式输出条目
2.2.1.18 限制输出大小
参数:-z
作用:限制输出大小
可选值:none|max
2.2.3 普通选项
Common options: -d level set LDAP debugging level to `level' -D binddn bind DN -e [!][=] general extensions (! indicates criticality) [!]assert= (RFC 4528; a RFC 4515 Filter string) [!]authzid= (RFC 4370; "dn:" or "u:") [!]chaining[=[/]] one of "chainingPreferred", "chainingRequired", "referralsPreferred", "referralsRequired" [!]manageDSAit (RFC 3296) [!]noop ppolicy [!]postread[=] (RFC 4527; comma-separated attr list) [!]preread[=] (RFC 4527; comma-separated attr list) [!]relax [!]sessiontracking abandon, cancel, ignore (SIGINT sends abandon/cancel, or ignores response; if critical, doesn't wait for SIGINT. not really controls) -h host LDAP server -H URI LDAP Uniform Resource Identifier(s) -I use SASL Interactive mode -n show what would be done but don't actually do it -N do not use reverse DNS to canonicalize SASL host name -O props SASL security properties -o [=] general options nettimeout= (in seconds, or "none" or "max") ldif-wrap= (in columns, or "no" for no wrapping) -p port port on LDAP server -Q use SASL Quiet mode -R realm SASL realm -U authcid SASL authentication identity -v run in verbose mode (diagnostics to standard output) -V print version info (-VV only) -w passwd bind password (for simple authentication) -W prompt for bind password -x Simple authentication -X authzid SASL authorization identity ("dn:" or "u:") -y file Read password from file -Y mech SASL mechanism -Z Start TLS request (-ZZ to require successful response)
2.2.3.1 指定调试级别
参数:-d level
作用:指定调试级别
可选值:level
2.2.3.2 绑定DN
参数:-D binddn
作用:使用专有的名称绑定到LDAP目录(有查询权限的用户DN)
2.2.3.3 指定搜索扩展
参数:-e
作用:指定搜索扩展
2.2.3.4 指定LDAP服务器
参数:-h host
作用:指定LDAP服务器
2.2.3.5 指定LDAP服务器的URI
参数:-H URI
作用:指定LDAP服务器的URI或URI列表(使用空格或逗号分隔)
2.2.3.6 使用SASL交互模式
参数:-l
作用:使用SASL交互模式
2.2.3.7 使用SASL交互模式
参数:-I
作用:使用SASL交互模式
2.2.3.8 模拟操作
参数:-n
作用:显示执行结果,但实际并没有真实执行
2.2.3.9 不使用SASL主机名
参数:-N
作用:不使用DNS规范化的SASL主机名
2.2.3.10 支持SASL安全属性
参数:-O
作用:支持SASL安全属性
2.2.3.11 指定常规选项
作用:指定常规选项
参数:
-o nettimeout =
可选值:整数值(秒为单位)|none|max
参数:
-o ldif-wrap =
可选值:整数值|no
2.2.3.12 指定服务器端口
参数:-p
作用:指定服务器端口
2.2.3.13 使用SASL安静模式
参数:-Q
作用:使用SASL安静模式
2.2.3.14 指定领域
参数:-R realm
作用:指定领域
2.2.3.15 指定认证标识
参数:-U authcid
作用:指定认证标识
2.2.3.16 详细模式运行
参数:-v
作用:详细模式运行
2.2.3.17 打印版本信息
参数:-V
作用:打印版本信息
2.2.3.18 命令使用密码认证
参数:-w
作用:命令中显式密码方式认证(后面跟密码)
2.2.3.19 提示输入密码认证
参数:-W
作用:提示输入密码认证
2.2.3.20 指定SASL授权标识
参数:-X authzid
作用:指定SASL授权标识
2.2.3.21 从文件读取密码
参数:-y file
作用:从文件读取密码
2.2.3.22 使用SASL机制
参数:-Y mech
作用:使用SASL机制
2.2.3.23 启动TLS请求
参数:-Z
作用:启动TLS请求
3 实操部分
由于只讲语法比较枯燥,以下以操作来熟悉,
3.1 基于选项的使用方法
ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" ldapsearch -x -h ldapSer.cmdschool.org -p 389 -w ldappassword -b "dc=cmdschool,dc=org"
– 参数“x”指使用简单的密码认证
– 参数“h”指定认证服务器域名
– 参数“p”指定认证服务器的端口
– 参数“W”指提示用户输入密码,如果不想提示请使用第二行的带“w”参数的命令
– 参数“b”指定基于具有唯一性的“dc=cmdschool,dc=org”的DN查找
在正式学习过滤器之前,笔者先告诉你,以上命令等效于以下命令,以上称之为默认过滤器
ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" "objectClass=*"
3.2 过滤器的使用方法
3.2.1 基本语法
3.2.1.1 语法格式
" "
注:以上表示过滤器需要声明为一个字符串,需包含在双引号或单引号中
3.2.1.2 使用范例
ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" ""
3.2.2 等于运算符的使用
3.2.2.1 语法格式
"uid=User001"
3.2.2.2 使用范例
ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" "uid=User001"
注:uid是属性名称,User001是属性值,即查询uid等于User001的条目
3.2.3 包含运算符的使用
3.2.3.1 语法格式
"uid=User*"
3.2.3.2 使用范例
ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" "uid=User*" ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" "uid=*001" ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" "uid=*"
注:可以理解为通配符的使用
3.2.4 大于等于运算符的使用
3.2.4.1 语法格式
"uid>=User100"
3.2.4.2 使用范例
ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" "uid>=User100"
注:大于等于关系可匹配数字或字符串
3.2.4 小于等于运算符的使用
3.2.4.1 语法格式
"uid<=User100"
3.2.4.2 使用范例
ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" "uid<=User100"
注:小于等于关系可匹配数字或字符串
3.2.5 约等于运算符的使用
3.2.5.1 语法格式
"uid~=User"
3.2.5.2 使用范例
ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" "uid<=User"
3.2.6 逻辑与运算符的使用
3.2.6.1 语法格式
"(&(deptname=IT)(cn=Will Tan))"
3.2.6.2 使用范例
ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" "(&(deptname=IT)(en=Will))"
注:查找IT部,英文名字叫“Will”条目
3.2.7 逻辑或运算符的使用
3.2.6.1 语法格式
"(|(deptname=IT)(deptname=Finance))"
3.2.6.2 使用范例
ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" "(|(deptname=IT)(deptname=Finance))"
注:查找IT部或者财务条目
3.2.7 逻辑非运算符的使用
3.2.6.1 语法格式
'(!(deptname=IT))'
3.2.6.2 使用范例
ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" '(!(deptname=IT))'
注:
– 查非IT部条目
– 使用非云算法要使用单引号,表示不扩展
3.3 特指属性的使用方法
3.3.1 返回单个属性
ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" "uid=User001" en
注:查找用户ID是“User001”的用户,只要求返回英文名字的属性
3.3.2 返回多个属性
ldapsearch -x -h ldapSer.cmdschool.org -p 389 -W -b "dc=cmdschool,dc=org" "uid=User001" en deptname
注:查找用户ID是“User001”的用户,要求返回指定属性英文名字和部门名称
参阅文档:
=============================================
LDAP数据交换格式(LDIF):
没有评论