免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 32042 | 回复: 13
打印 上一主题 下一主题

[ldap] [原创]如何在Linux下通过ldapsearch查询活动目录的内容 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-08-21 20:52 |只看该作者 |倒序浏览
从Win2000开始.微软抛弃NT域而采用活动目录来管理Windows域.而活动目录就是微软基于遵守LDAP协议的目录服务.如果用扫描器扫描的话可以发现活动目录的389端口是打开的.而且微软虽然对这个协议都擅自作了些改动.但都集中在Replication等同步的部分.其他的部分是基本和其他产品兼容的.所以ldapsearch工具可以顺利的搜索AD中的记录.其实AD最大的客户就是微软自己.所以在服务器配置向导中才用DC作为正式的名称.AD这个名称反而次要.AD在配置好之后就有了健全的目录树结构.AD的用户的objectclass为User,默认的用户记录位于Users下,而Users的objectclass就是Container.这样一个AD用户的DN可能是"cn=username,cn=users,dc=domain-suffix".AD默认的安全策略不允许"空"绑定(既bind(""等DN为空的一系列绑定函数).所以必需要有合法验证的绑定才行:
ldapsearch -x -W -D "cn=username,cn=users,dc=domain-suffix" -b "basedn" -h host
或者是
ldap search -x -w cred -D "cn=username,cn=users,dc=domain-suffix" -b "basedn" -h host
其中-x对应API中的smiple_bind*().-w/-W 表示需要密码 -D "绑定的DN" -b "开始搜索的DN" -h 接主机的IP或者域名.
举例:我在学校有一台实验用的主机troy配置为"osdn.zzti.edu.cn"主域控制器.假如我在我装有fedora的笔记本osiris上执行ldapsearch,命令如下:
ldapsearch -x -W -D "cn=administrator,cn=users,dc=osdn,dc=zzti,dc=edu,dc=cn" -b "cn=administrator,cn=users,dc=osdn,dc=zzti,dc=edu,dc=cn" -h troy.osdn.zzti.edu.cn
这样就回返回用户administrator的信息:
# extended LDIF
#
# LDAPv3
# base <cn=administrator,cn=users,dc=osdn,dc=zzti,dc=edu,dc=cn>; with scope sub
# filter: (objectclass=*)
# requesting: ALL
#

# Administrator, Users, osdn.zzti.edu.cn
dn: CN=Administrator,CN=Users,DC=osdn,DC=zzti,DC=edu,DC=cn
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: Administrator
description:: 566h55CG6K6h566X5py6KOWfnynnmoTlhoXnva7luJDmiLc=
distinguishedName: CN=Administrator,CN=Users,DC=osdn,DC=zzti,DC=edu,DC=cn
instanceType: 4
whenCreated: 20040820145628.0Z
whenChanged: 20040820151744.0Z
uSNCreated: 8194
memberOf: CN=Group Policy Creator Owners,CN=Users,DC=osdn,DC=zzti,DC=edu,DC=cn
memberOf: CN=Domain Admins,CN=Users,DC=osdn,DC=zzti,DC=edu,DC=cn
memberOf: CN=Enterprise Admins,CN=Users,DC=osdn,DC=zzti,DC=edu,DC=cn
memberOf: CN=Schema Admins,CN=Users,DC=osdn,DC=zzti,DC=edu,DC=cn
memberOf: CN=Administrators,CN=Builtin,DC=osdn,DC=zzti,DC=edu,DC=cn
uSNChanged: 13895
name: Administrator
objectGUID:: z44SriNF40SGBgQson8RtA==
userAccountControl: 66048
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 127375629853437500
lastLogoff: 0
lastLogon: 127375630164843750
pwdLastSet: 127374851807500000
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAAfA5HVz/NVF7R0u429AEAAA==
adminCount: 1
accountExpires: 9223372036854775807
logonCount: 17
sAMAccountName: Administrator
sAMAccountType: 805306368
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=osdn,DC=zzti,DC=edu,DC
=cn
isCriticalSystemObject: TRUE

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
大家不妨试试从"dc=domain-suffix"开始搜索.这样可以访问整个的活动目录结构.
可以借此分析一下活动目录的目录结构.然后借鉴到自己的目录中.平时很难找到模仿学习的对象.这下可以拿活动目录开刀.何乐不为呢?

论坛徽章:
0
2 [报告]
发表于 2004-08-24 13:53 |只看该作者

[原创]如何在Linux下通过ldapsearch查询活动目录的内容

非常感谢gnap大虾,在尝试中,有以下几个问题,望指点:
1、目录树结构的问题,如何取得目录树结构,如果basedn设置为domain-suffix时,ldapsearch返回的信息现的非常的多,如何能够简单的提取各个目录树结构,比如windows工具访问AD的时候有个tree view功能可以现实各个目录树机构。
2、ldapsearch是不是不支持中文啊,在AD上,我有个中文名的OU,windows的工具能够查找出来,但ldapsearch查找不出来,也是 把basedn设置为domain-suffix的。
3、在设置basedn查看给目录信息的时候,能不能仅仅显示该目录的信息,而不显示他所有子目录的信息。

论坛徽章:
0
3 [报告]
发表于 2004-08-24 19:00 |只看该作者

[原创]如何在Linux下通过ldapsearch查询活动目录的内容

1.搜索的时候只要在后面加上dn就可以只返回dn了
2.中文的支持我不清楚.不过搜索LDAP的结果中中文的姓名等都可以显示.
3.用-s base|one|sub分别为记录下层子目录和所有子目录
举例
ldapsearch -x -W -D "cn=administrator,cn=users,dc=osdn,dc=zzti,dc=edu,dc=cn" -b "cn=user,dc=osdn,dc=zzti,dc=edu,dc=cn" -h troy -s base
将返回users容器的所有属性
ldapsearch -x -W -D "cn=administrator,cn=users,dc=osdn,dc=zzti,dc=edu,dc=cn" -b "dc=osdn,dc=zzti,dc=edu,dc=cn" -h troy dn -LLL
将返回所有的DN并禁用所有的注释这样就看得清楚了
ldapsearch -x -W -D "cn=administrator,cn=users,dc=osdn,dc=zzti,dc=edu,dc=cn" -b "cn=users,dc=osdn,dc=zzti,dc=edu,dc=cn" -h troy -s one dn
将返回所有的users容器下的记录的DN

论坛徽章:
0
4 [报告]
发表于 2004-08-25 10:53 |只看该作者

[原创]如何在Linux下通过ldapsearch查询活动目录的内容

非常感谢gnap大虾,还有一个问题是关于中文的
ldapsearch -x -W -D "cn=administrator,cn=users,dc=insigma,dc=org" -b "dc=insigma,dc=org" -h ADHost -s one  dn -LLL
返回的数据是:
dn: CN=Builtin,DC=insigma,DC=org

dn: CN=Computers,DC=insigma,DC=org

dn: OU=Domain Controllers,DC=insigma,DC=org

dn: CN=ForeignSecurityPrincipals,DC=insigma,DC=org

dn: CN=Infrastructure,DC=insigma,DC=org

dn: CN=LostAndFound,DC=insigma,DC=org

dn: CN=System,DC=insigma,DC=org

dn: CN=Users,DC=insigma,DC=org

dn:: T1U955a+5o6n5Lit5b+DLERDPWluc2lnbWEsREM9b3Jn

# refldap://insigma.org/CN=Configuration,DC=insigma,DC=org??base

最后的一个DN是乱码,实际上应该为OU=疾控中心等字样,
下面是通过windows的工具访问AD的结果:
>;>; Dn: CN=Infrastructure,DC=insigma,DC=org
        1>; canonicalName: insigma.org/Infrastructure;
        1>; cn: Infrastructure;
        1>; distinguishedName: CN=Infrastructure,DC=insigma,DC=org;
        2>; objectClass: top; infrastructureUpdate;
        1>; name: Infrastructure;
>;>; Dn: CN=LostAndFound,DC=insigma,DC=org
        1>; canonicalName: insigma.org/LostAndFound;
        1>; cn: LostAndFound;
        1>; description: Default container for orphaned objects;
        1>; distinguishedName: CN=LostAndFound,DC=insigma,DC=org;
        2>; objectClass: top; lostAndFound;
        1>; name: LostAndFound;
>;>; Dn: CN=System,DC=insigma,DC=org
        1>; canonicalName: insigma.org/System;
        1>; cn: System;
        1>; description: Builtin system settings;
        1>; distinguishedName: CN=System,DC=insigma,DC=org;
        2>; objectClass: top; container;
        1>; name: System;
>;>; Dn: CN=Users,DC=insigma,DC=org
        1>; canonicalName: insigma.org/Users;
        1>; cn: Users;
        1>; description: Default container for upgraded user accounts;
        1>; distinguishedName: CN=Users,DC=insigma,DC=org;
        2>; objectClass: top; container;
        1>; name: Users;
>;>; Dn: OU=疾控中心,DC=insigma,DC=org
        1>; canonicalName: <ldp: Binary blob>;;
        1>; distinguishedName: <ldp: Binary blob>;;
        2>; objectClass: top; organizationalUnit;
        1>; ou: <ldp: Binary blob>;;
        1>; name: <ldp: Binary blob>;;

为什么ldapsearch返回结果不支持中文,是由于RedHat9的缘故还是openldap不支持或者需要在编译的时候加参数?

论坛徽章:
0
5 [报告]
发表于 2004-08-26 01:51 |只看该作者

[原创]如何在Linux下通过ldapsearch查询活动目录的内容

楼上的那个 T1U955a+5o6n5Lit5b+DLERDPWluc2lnbWEsREM9b3Jn 是中文
你把它保存到文件a中,执行下面的代码:
perl -MMIME::Base64 -ne 'print decode_base64($_)' < a | iconv -f utf8

就可以看到结果:OU=疾控中心,DC=insigma,DC=org

论坛徽章:
0
6 [报告]
发表于 2004-08-26 10:08 |只看该作者

[原创]如何在Linux下通过ldapsearch查询活动目录的内容

cyberdna, 你好!能解释一下您这句话的意思吗,对perl不了解
按照您的方式,有下面一下情况
1,如果我仅仅把T1U955a+5o6n5Lit5b+DLERDPWluc2lnbWEsREM9b3Jn 存在文件a中,使用命令perl -MMIME::Base64 -ne 'print decode_base64($_)' < a | iconv -f utf8,返回一下错误:OU=iconv: illegal input sequence at position 3
2,如果我仅仅把T1U955a+5o6n5Lit5b+DLERDPWluc2lnbWEsREM9b3Jn 存在文件a中,使用命令perl -MMIME::Base64 -ne 'print decode_base64($_)' < a | iconv -t utf8,返回OU=莽聳戮忙侣?ぢ嘎?ヂ柯?DC=insigma,DC=org
3,如果把
dn: CN=Builtin,DC=insigma,DC=org

dn: CN=Computers,DC=insigma,DC=org

dn: OU=Domain Controllers,DC=insigma,DC=org

dn: CN=ForeignSecurityPrincipals,DC=insigma,DC=org

dn: CN=Infrastructure,DC=insigma,DC=org

dn: CN=LostAndFound,DC=insigma,DC=org

dn: CN=System,DC=insigma,DC=org

dn: CN=Users,DC=insigma,DC=org

dn:: T1U955a+5o6n5Lit5b+DLERDPWluc2lnbWEsREM9b3Jn

# refldap://insigma.org/CN=Configuration,DC=insigma,DC=org??base
存在文件a中
使用命令perl -MMIME::Base64 -ne 'print decode_base64($_)' < a | iconv -f utf8,返回错误:vpiconv: illegal input sequence at position 2

论坛徽章:
0
7 [报告]
发表于 2004-08-26 12:09 |只看该作者

[原创]如何在Linux下通过ldapsearch查询活动目录的内容

我的意思是"OU=疾控中心,DC=insigma,DC=org"转换成utf8,再作Base64编码就是:T1U955a+5o6n5Lit5b+DLERDPWluc2lnbWEsREM9b3Jn

检查MIME::Base64模块、iconv装上没有

论坛徽章:
0
8 [报告]
发表于 2004-08-26 12:36 |只看该作者

[原创]如何在Linux下通过ldapsearch查询活动目录的内容

呵呵编码的事我没研究过
也不会perl,这下帮不了你啦
还有别那么叫我啦!俺还是学徒哪!

论坛徽章:
0
9 [报告]
发表于 2004-08-27 10:29 |只看该作者

[原创]如何在Linux下通过ldapsearch查询活动目录的内容

谢谢cyberdna,由于对perl不是很了解,导致尝试的时候走了些误区,
用命令perl -MMIME::Base64 -ne 'print decode_base64($_)' < a | iconv -f utf8 -t gb18030,a文件中存放的是T1U955a+5o6n5Lit5b+DLERDPWluc2lnbWEsREM9b3Jn
便ok了,
不过有点不爽的是,我的文件中含有‘:’字符,base64好像不支持这个东西!

论坛徽章:
0
10 [报告]
发表于 2006-12-29 11:57 |只看该作者
请问怎么通过ldapsearch找到AD的密码属性呢??
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP