先说下ldap,轻量目录访问协议。LDAP就是设计用来访问目录数据库的一个协议。也就是为了能访问目录数据库,ldap是其中一种协议
LDAP的基本模型
DN:uid=jack,ou=people,dc=muxue,dc=com
,RDN就是uid=jack
DN:uid=jack,ou=people,dc=muxue,dc=com
的name属性就是hack,age属性是18,sex就是male关键字
英文全称
含义
dc
Domain Component
域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com(一条记录的所属位置)
uid
User Id
用户ID songtao.xu(一条记录的ID)
ou
Organization Unit
组织单位,组织单位可以包含其他各种对象(包括其他组织单元),如“oa组”(一条记录的所属组织)
cn
Common Name
公共名称,如“Thomas Johansson”(一条记录的名称)
sn
Surname
姓,如“许”
dn
Distinguished Name
“uid=songtao.xu,ou=oa组,dc=example,dc=com”,一条记录的位置(唯一)
rdn
Relative dn
相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=tom”或“cn= Thomas Johansson”
不同厂商对目录服务数据库的不一样,我们这里说的Active Directory,是微软的对目录服务数据库的实现;Active Directory存储着整个域内所有的计算机,用户等的所有信息。
连接域内的AD:
在这里会介绍AD中会有啥东西
https://www.oreilly.com/library/view/active-directory-5th/9781449361211/ch04.html
微软将Active Directory划分为若干个分区(Naming Context,简称NC),每个Naming Context都有其自己的安全边界。
AD预定义了3个NC
配置NC,林配置信息的主要存储库,包含有关站点,服务,分区和Active DirectorySchema 的信息,并被复制到林中的每个域控制器。配置NC的根位于配置容器中,该容器是林根域的子容器。例如,muxue.com
林将为CN=Configuration,DC=muxue,DC=com
RDN
说明
cn=DisplaySpecifiers
包含显示说明符对象的容器,这些对象定义了 Active Directory MMC 管理单元的各种显示格式。
cn=Extended-Rights
扩展权限 ( controlAccessRight
) 对象的容器。
cn=ForestUpdates
包含用于表示林状态和域功能级别更改的对象。
cn=LostAndFoundConfig
孤立对象的容器。
cn=NTDS Quotas
用于存储配额对象的容器,用于限制安全主体可以在分区或容器中创建的对象数量。
cn=Partitions
包含每个命名上下文、应用程序分区和外部 LDAP 目录引用的对象。
cn=Physical Locations
包含位置对象 ( physicalLocation
),可以与其他对象关联以表示对象的位置。
cn=Services
存储有关服务(例如文件复制服务、Exchange 和 Active Directory 本身)的配置信息。
cn=Sites
包含所有站点拓扑和复制对象。这包括site
、subnet
、siteLink
、server
和nTDSConnection
对象,仅举几例。
cn=WellKnown Security Principals
保存代表常用的外部安全主体的对象,例如Everyone、Interactive 和Authenticated Users。
Schema NC 包含表示 Active Directory 支持的类和属性的对象。架构是在林范围的基础上定义的,因此架构 NC 被复制到林中的每个域控制器。这个会详细 因为设计到类继承
每个 Active Directory 域都有一个域命名上下文,其中包含特定于域的数据。此 NC 的根由域的专有名称 (DN) 表示,通常称为 NC 头。比如muxue.com
域的DN将为dc=muxue,dc=com
RDN
说明
cn=Builtin
预定义的内置本地安全组的容器。示例包括管理员、域用户和帐户操作员。
cn=Computers
代表成员服务器和工作站的计算机对象的默认容器。您可以使用redircmp.exe实用程序更改默认容器。
ou=Domain Controllers
代表域控制器的计算机对象的默认组织单位。
cn=ForeignSecurityPrincipals
占位符对象的容器,代表域中来自林外部域的组成员。
cn=LostAndFound
孤立对象的容器。孤立对象是在同一复制期内从另一个域控制器中删除的容器中创建的对象。
cn=Managed ServiceAccounts
托管服务帐户的容器。托管服务帐户是一种特殊类型的安全主体,可以轮换自己的密码。有关托管服务帐户的更多信息,请参阅第 10 章。
cn=NTDS Quotas
用于存储配额对象的容器,用于限制安全主体可以在分区或容器中创建的对象数量。
cn=Program Data
应用程序存储数据的容器,而不是使用自定义的顶级容器。
cn=System
各种域配置对象的容器。示例包括信任对象、DNS 对象和组策略对象。
cn=TPM Devices
可信平台模块 (TPM) 密钥恢复信息的容器。
cn=Users
用户和组对象的默认容器。您可以使用redirusr.exe 实用程序更改默认容器 。
从 Windows Server 2003 开始,微软允许用户自定义分区来扩展Naming Context的概念。Application Partitions其实就是Naming Context的一个扩展,它本质上还是属于Naming Context。管理员可以创建分区(这个分区我们称为区域),以将数据存储在他们选择的特定DC上
Naming Context
是微软预定义的,用户不可以定义;用户如果想要定义一个分区,可以使用Application Partitions
,微软默认预置了两个Application Partitions
Application Partitions
可以存储动态对象。动态对象是具有生存时间(TTL) 值的对象,该值确定它们在被AD自动删除之前将存在多长时间。也就说Application Partitions
可以给数据设置个TTL,到点了AD就把这条给删了
ntdsutil
partition management
create nc "dc=test,dc=muxue,dc=com" dc.muxue.com
我们可以通过ldp查看域内的所有Naming Context
和Application Partitions
删除分区
ntdsutil
ntdsutil: LDAP Policies
ldap policy: Connections
server connections: connect to server dc
绑定到 dc ...
用本登录的用户的凭证连接 dc。
server connections: quit
ldap policy: quit
ntdsutil: partition management
partition management: delete nc "dc=test,dc=muxue,dc=com"
此操作已经成功。分区已经标记为从企业中删除。一段时间内它将在后台删除。
注意: 请不要用同名创建另一分区,直到服务拥有此分区的服务有足够的时间删除它。这将在此分区删除在整个林内复制时完成,而且拥
有此分区的服务已经删除该分区内的所有对象。可以通过查阅每个服务器上的目录事件日志来验证分区删除是否完成。
然后就成功删除了
Example:CN=WIN7,CN=Computers,DC=muxue,DC=com
在AD中是一个条目,它里面有非常多的属性
而条目有哪些属性是由他的类决定的,在objectClass属性可以看到属于哪个类
子类继承父类的所有属性,Top类是所有类的父类。在之前我们看objectClass
的时候,可以看到条目是CN=WIN7,CN=Computers,DC=muxue,DC=com
是类Computer的实例。objectClass
里的值除了有Computer
之外还有:top
,person
,organizationalPerson
,user
,这是因为objectClass保存了类继承关系,user
继承了organizationalPerson
,organizationalPerson
继承了person
,person
继承了top
。
这我就是完全抄的daiker师傅的了
直接用Active Directory Schena
查看比较方便
拿上面一个例子说明:CN=WIN7,CN=Computers,DC=muxue,DC=com
是类Computer的实例,类Computer就存储在Schema NC里面,是Schema NC的一个条目(其实我上面有一个图可以看出来),CN=Computer,CN=Schema,CN=Configuration,DC=muxue,DC=com
每个条目都是类的实例,而类是是Schema NC的一个条目。因此类条目也是一个类的实例,这个类是classSchema(Schema NC的一个条目)。所有的类条目都是classSchema类的实例。
名称是Computer(通过adminDescription,adminDisplayName,cn,name属性)
属性subClassOf 表明他的父类是user类
defaultSecurityDescriptor
属性表明,如果在创建Computer这个类的实例的时候,如果没指定ACL,就用这个属性的值作为实例的ACL。在实例的nTSecurityDescriptor
里面。
注意跟nTSecurityDescriptor区分开来,而defaultSecurityDescriptor是实例默认的ACL,nTSecurityDescriptor是这个条目的ACL。
Example:
CN=Computer,CN=Schema,CN=Configuration,DC=muxue,DC=com 有两个属性nTSecurityDescriptor,defaultSecurityDescriptor。
nTSecurityDescriptor是这条条目的ACL。
那Computer的实例化对象CN=WIN7,CN=Computers,DC=muxue,DC=com,如果在创建的时候,没有指定ACL,那么CN=WIN7,CN=Computers,DC=muxue,DC=com的nTSecurityDescriptor的值就是CN=Computer,CN=Schema,CN=Configuration,DC=muxue,DC=com 的属性defaultSecurityDescriptor的值。
rDNAttID
属性表明通过LDAP连接到类的实例的时候,使用的两个字母的前缀用过是cn。所以他的实例CN=WIN7,CN=Computers,DC=muxue,DC=com
,使用的前缀是cn。
Example:
条目OU=Domain Controllers,DC=muxue,DC=com
是organizationalUnit
的一条实例
然后我们查看CN=Organizational-Unit,CN=Schema,CN=Configuration,DC=muxue,DC=com
的rDNAttID
属性是
所以对于Organizational-Unit
类的实例,他的前缀是OU,OU=Domain Controllers
objectClassCategory
属性标签他是一个什么类
1 -> 结构类
2 -> 抽象类
3 -> 辅助类
systemPossSuperior
属性表明,约束了他的实例只能创建在这些类之下
实例是怎么获取到基本属性的
查询目录需要指定两个要素
比如指定BaseDN为DC=muxue,DC=com
,就会以此为根向下搜索
https://docs.microsoft.com/zh-cn/windows/win32/ad/active-directory-domain-services
手机扫一扫
移动阅读更方便
你可能感兴趣的文章