midpoint源码阅读七(使用示例:多租户用户管理三——OpenLdap 中文文档)

Openldap官网文档:http://www.openldap.org/doc/
Openldap官网文档翻译:OpenLDAP2.4管理员指南
Openldap中文文档:openLDAP (简体中文)
LDIF修改ldap记录及配置示例:http://seanlook.com/2015/01/22/openldap_ldif_example/

1、常用命令行

1)查询

[root@localhost 桌面]# ldapsearch -x -D "cn=admin,dc=example,dc=com" -w zhl -b "dc=example,dc=com" 
[root@localhost 桌面]# ldapsearch -x -D "cn=admin,dc=example,dc=com" -W -b "dc=example,dc=com" 
[root@localhost 桌面]# ldapsearch -b "dc=example,dc=com" -H ldaps://192.168.5.129:389
[root@localhost 桌面]# ldapsearch -b "dc=example,dc=com" -h zhl.example.com

-x:进行简单认证
-D:用来绑定服务器的DN
-w:绑定DN的密码
-W:提示输入密码
-b:指定要查询的根节点
-h:指定要连接的服务器的主机名
-H:指定要查询的服务器
-L:指定以 LDIF 格式输出
-S cn:按指定的属性排序

运算符介绍

运算符 用途 示例
=、>=、<= 相同、大于等于、小于等于 “cn=admin”、”cn>=D”、”rootNumber<=300”
=* 查找包含特定属性的值的项,而不用管属性的值是什么 “sn=*”
~= 查找特定项,该项中所含属性的值约等于指定的值 “sn~=Brning” 可能返回 sn=Browning
& 查找与所有搜索过滤器中指定的条件相匹配的项 “(&(cn=ultra1 user)(l=Dallas))”
| 查找与至少一个搜索过滤器中指定的条件相匹配的项 “(
! 查找与任何搜索过滤器中指定的条件都不匹配的项 “(!(cn=ultra1 user)(l=Dallas))”
= < string >*< string > 查找所包含的属性值与指定值相同的项(模糊匹配) “cn=y*zong” “cn=yan*”

其他示例

搜索 命令
使用端口 389 的主机 zhl.example.com 上的所有项,并返回所有属性和值同上,但仅返回属性名称 right-ldapsearch -h zhl.example.com “objectClass=*”
在使用端口 389 的主机 zhl.example.com 上,在 ”ou=ultra1,o=customers,c=ultra1-admin” 基准下搜索 (cn=Mike*),并返回所有属性和值 ldapsearch -b “ou=ultra1,o=customers,c=ultra1-admin” -h zhl.example.com “(cn=Mike*)”
使用端口 389 的主机 zhl.example.com 上的uid中包含test或givenName包含test的项,并以 LDIF 格式返回 mail、cn、sn 和 givenname 等属性 ldapsearch -L -h zhl.example.com “(|(uid=*test*)(givenName=*test*))” mail cn sn givenname

2)添加

[root@localhost 桌面]# ldapadd  -x -D "cn=admin,dc=example,dc=com" -w zhl -f ./add.ldif 

-x :进行简单认证
-D:用来绑定服务器的DN
-h:目录服务的地址
-w:绑定DN的密码
-W:提示输入密码
-f:使用ldif文件进行条目添加的文件
add
创建后图

3)修改

[root@localhost 桌面]# ldapmodify -xWD 'cn=admin,dc=example,dc=com' -f modify.ldif

添加host属性,修改uidNumber的值,删除gecos属性
修改

重命名条目
modrdn只允许修改dn最左边的部分,且不能重命名带叶子或分支的子树,如果要将一个用户移动到另一个部门下,只能在新部门创建dn,然后删除旧的dn
重命名

4)删除

[root@localhost 桌面]# ldapdelete -xWD "cn=admin,dc=example,dc=com" -h localhost -p 389 "cn=idm xap,ou=Administrators,dc=example,dc=com"

2、ldif文件简介

LDIF文件是OpenLDAP操作数据或修改配置的一切来源,添加、修改、删除条目等都通过编辑该文件来进行,详细的介绍可以参看 维基百科介绍 ,下面对其进行一个简单的介绍。

# LDIF文件条目格式 
# dn行类似于关系数据库中一条记录的关键字,不能与其他dn重复
# 一个LDIF文件中可以包含多个条目,每个条目之间用一个空行分隔
dn: 条目名
属性描述: 值
属性描述: 值
属性描述: 值
... ... 

dn: dc=example,dc=com
dc: example
objectClass: top
objectClass: domain

dn: ou=Administrators,dc=example,dc=com
objectclass: top
objectclass: organizationalunit
ou: Administrators

dn: cn=idm,ou=Administrators,dc=example,dc=com
objectclass: top
objectclass: person
cn: idm
sn: IDM Administrator
description: Special LDAP acccount used by the IDM to access the LDAP data.
userPassword: {SSHA}R5KF3K4X2FX5gkWKuDxm4M6gZyO0QgNF

dn: uid=zhl,ou=Administrators,dc=example,dc=com
uid: zhl
cn: zhl
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$odw5bq4e$CTc3Rln6zu7wrZ/MBAXwy.
shadowLastChange: 16901
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 500
homeDirectory: /home/zhl
gecos: zhl

objectClass介绍
LDAP中,一个条目必须包含一个objectClass属性,且需要赋予至少一个值。每一个值将用作一条LDAP条目进行数据存储的模板;模板中包含了一个条目必须被赋值的属性和可选的属性。
objectClass有着严格的等级之分,最顶层是top和alias。例如,organizationalPerson这个objectClass就隶属于person,而person又隶属于top。top为顶层抽象类,无属性。
objectClass可以通过schema来进行自定义,schema文件来定义其必须包含的属性和可选的属性。
objectClass可分为以下3类:
结构型(Structural):如person和organizationUnit;
辅助型(Auxiliary):如extensibeObject;
抽象型(Abstract):如top,抽象型的objectClass不能直接使用。
常用objectClass有:
account(userid为该类必设属性)、alias、
dcobject(dc为该类必设属性)、
domain、ipHost、
organization((o为该类必设属性)、
organizationalRole、
organizationalUnit(ou为该类必设属性)、
person(cn、sn为该类必设属性)、organizationalPerson(同person)、
inetOrgPerson、residentialPerson、
posixAccount(cn、gidNumber、homeDirectory、uid、uidNumber为该类必设属性)、
posixGroup(cn、gidNumber为该类必设属性)
图片 属性
ldap中常用属性
dn:定义该条目的标识
dc:domain Component,常用来指一个域名的一部分
ou:organizationalUnitName,指一个组织单元的名字
cn:common name,指一个对象的名字。如果指人,需要使用其全名
sn:surname,指一个人的姓
uid:userid,通常指某个用户的登录名
o:organizationName,指一个组织的名字
l:指一个地名,如一个城市或者其他地理区域的名字
givenName:指一个人的名字,不能用来指姓
mail:电子信箱地址
telephoneNumber:电话号码,应该带有所在的国家的代码

猜你喜欢

转载自blog.csdn.net/fengshuiyue/article/details/80687970
今日推荐