📄 linux下的ldap(转).txt
字号:
现在启动ldap服务器。
如果你使用SuSE预先编译好的openldap服务器,你可以通过下面的命令启动ldap服务
/etc/rc.d/ldap start
在RedHat,该命令为
/etc/rc.d/init.d/ldap start
如果你是使用缺省设置自己编译并安装的,你可以用/usr/local/libexec/slapd &启动ldap服务器。如果没有使用缺省设置,请找到slapd文件并运行它。
在新安装的LDAP服务器上添加数据
到现在为止,你的ldap服务器已经运行起来了,可以准备添加数据了。最标准的往ldap服务器中添加数据的方法是建立一个LDIF(LDAP目录交换格式)文件。你可以通过阅读man ldif来获得更多关于ldif的信息。
简单说来,ldif是ldap条目的文本表示。这些条目是很好读懂的,并且可以在来自两个不同的厂家的LDAP服务器间交换数据,哪怕使用的是不同的数据库后台或者是运行在不同的操作系统上。
是的,还有其他方法。我对为什么不使用XML替代LDIF感到很惊讶。
就让我们一起来建立ldif文件,而不要感到任何的忙乱。一些应该记住的要点:
? ldif 文件中的每一记录/条目都应用一个空行分开
? 空格是很重要的,"Atif Ghaffar" 和"Atif Ghaffar " 是完全不同的
下面是一个ldif文件linuxfocus.org.ldif
dn: o=linuxfocus.org
o: linuxfocus.org
objectclass: top
objectclass: organization
dn: ou=editors, o=linuxfocus.org
ou: editors
objectclass: organizationalUnit
dn: uid=aghaffar, ou=editors, o=linuxfocus.org
uid: aghafar
cn: Atif Ghaffar
sn: Ghaffar
givenname: Atif
objectclass: person
userpassword: yIvSBWSuLs2N2
mailacceptinggeneralid: aghaffar@linuxfocus.org
ou: editors
dn: uid=mkempe, ou=editors, o=linuxfocus.org
uid: mkempe
cn: Magnus Kempe
sn: Kempe
givenname: Magnus
objectclass: person
userpassword: clearpass
mailacceptinggeneralid: mkempe@linuxfocus.org
maildrop: mkempe@developer.ch
preferredlanguage: fr
ou: editors
下面我们将这些数据加入ldap目录。我们使用命令行程序ldapadd
ldapadd -D "cn=Manager, o=linuxfocus.org" -w secret < linuxfocus.org.ldif
该命令使用“cn=Manager, o=linuxfocus.org”作为管理员的区分名(dn),使用secret
作为密码,然后从linuxfocus.org.ldif文件中读取数据并写入ldap目录。
如果一切正常的话你可以准备开始查询你的ldap目录了,否则如果其间出了差错的话,
你或许可以准备往我的邮箱灌水了;)
为我的邮件服务器考虑,我希望一切正常。
在继续之前,让我们一行一行的来检查一下这个ldif文件。
1. 这一行定义顶级记录的区分名(dn),这将是目录树的根,这是必须定义的。
2. 这一行我们定义组织(o),并赋值为“linuxfocus.org”。
3. 这一行定义这个对象的对象类,我们定义为top。
4. 定义对象的类型(这里是组织对象)。
5. 空行为分割符。
6. 定义组editors(这是linuxfocus editors分支),举一反三,我们也可以根据不同的目的来定义其他的分支,比如hosts和data分支。
7. 明确定义组织单元(ou)editors的属性。属性是可以被用来查询的条目,比如,如果你想要查询所有属于editors的用户,你可以这样查询“show all dn where ou=editors”。如果我们没有定义属性,则这条记录将不符合查询条件。
8. 定义对象类(组织单元)。
9. 空行为分割符。
10. 定义属于组editors的用户aghaffar的区分名。
11. 定义该用户的uid(要保证其是唯一的)。
12. 定义该用户的cn(普通名字),比如,我喜欢将我的名字写成“Firstname Lastname”,而有的人可能喜欢“Lastname Firstname”.
13. 姓
14. 名
15. 对象类(人)
16. 用户密码(这里是加密的密码)。这串字符表示密码是用加密算法加密过的。剩下的部分是用“yI”加密的密码"yIvSBWSuLs2N"。
17. 定义我的邮件地址。
18. 定义我所属于的组织单元(组editors)
19. 空行为分割符。
20. 定义另一个用户mkempe
21. 普通名字
22. 姓
23. 名
24. 对象类
25. 用户密码:注意这里我们使用明文密码。你可以为不同的用户使用不同的方案。这是根据每一条目定义的,而不是基于数据库定义的。因此一个用户可能使用明文密码,第二个可能使用加密密码,另一个则可能使用SHA认证方式。
26. 邮件地址。
27. maildrop:定义用户邮箱的真实位置。在这个例子中,这个服务器接受收件人为mkempe@linuxfocus.org的邮件,然后邮件服务器会查询ldap服务器“有接受收件人为mkempe@linuxfocus.org的邮箱吗?”ldap服务器就会返回maildrop属性值。接着邮件服务器就会将该邮件发给那个邮箱。
28. 母语:这是我们一个额外的属性,这个属性定义了用户的母语。我们可以利用存储在中央ldap服务器的信息来为改用户提供更好的服务。比如,直接向该用户显示本页的法语版本。请注意前面一条记录没有母语、maildrop等属性,这也是ldap强大的一个方面——不必象一个数据库中的表格那样拥有固定的结构。你可以在一条记录中定义3条属性,而在另一个中定义30条属性。
29. 组织单元。
查询ldap数据库
让我们找出关于用户mkempe的所有数据
ldapsearch uid=mkempe
找出editors的所有区分名
ldapsearch '(&(objectclass=person)(ou=editors))' dn
更多的例子可以参考ldapsearch的man手册。
LDAP的好处
让我们来看一看迁移到LDAP所带来的好处。
LDAP是一个开放的标准。你将使用的大多数的新的应用程序都能够查询ldap数据库,甚至windows2000使用LDAP作为他的目录服务。信息的集中化将会带来巨大的利益,单点管理,减少错误,减少数据复制等等。
LDAP应用实例
如果我是康柏公司的推销员,我可以测试向你销售LDAP并告诉你可以用它来作为“联系人管理”,但是我不受雇于康柏公司,所以我会尝试向你介绍LDAP有趣的一些方面。
同一登录系统的单一数据源
用户帐号放置在一个集中的地方。
你可能会使用一个LDAP目录来管理你的用户,放置用户的密码及其他信息,而不仅仅是存放在/et/passwd文件中。Windows/Unix/Mac用户都可以使用这些信息。
建议:你可以使用LDAP信息来进行用户认证,而不是用shadow或nis等等方式。
建议:你可以写一个小web程序来让用户不用登录到系统就可以更改他的存放在LDAP中的unix密码。这时你将需要使用pam_ldap, 可以参考资源列表中关于pam_ldap的url.
注意:
统一登录系统的单一数据源!=同一登录系统
大多数LDAP销售商在向你销售LDAP时,会告诉你如果你使用LDAP,你就可以拥有一个同一登录系统解决方案。其实这只说对了一半。同一登录系统并不是什么新玩艺,只不过时IT经理的噱头而已。
同一登录系统的实例:
* 你用"aghaffar"登录工作站
* 你访问公司的内部网,内部网中的web页面是密码保护的,你不用登录就可以访问,因为www服务器可以识别你的身份。
* 你开始运行一个程序,比如SAP, 再一次地,你不需要密码,因为系统已经拥有了你的身份和信息。
* 等等等等
当然你可以使用LDAP作为用户数据源,而在几个不同的应用程序间进行会话管理的小戏法就是所谓的“统一登录系统”了,要知道,这和LDAP是风马牛不相及的。
其实这可以用LDAP, NIS, NT域控制器帐号,数据库,平面文件实现的。
建议:你可能想要建立用户邮件帐号但是不想建立unxi帐号。没问题,我正在使用一个LDAP+Postfix 邮件服务器+ Cyrus IMAP/POP服务器的复合服务器来管理成千上万的用户,当然不用建立相应的系统帐号。
建议:你可能想要将不同应用程序的信息集中化。比如,将Netscape的首选项、书签等信息存入LDAP,并且用户可以将这些信息从一部计算机移动到另一部,从LDAP服务器下载他/她的信息。这个用户可以从Windows NT Netscape 迁移到Linux/Solaris/Macintosh Netscape的同时还使用同样的用户信息(对不起,又提到了Microsoft,我知道这倒了你的胃口)。
情景:我憎恶老是在web和书面上填充我的个人信息。我不知道为什么人们老是想知道我的年龄、生日、办公室地址,即使已经告诉过他们。在我以前谋职的公司里,我们不得不建立庞大的表格,表格的信息75%都是一样的(姓名、主题、通信地址、楼层、管理员名字、部门)。
建议:比如,如果我的电话出故障了,我给你的唯一信息是“我的电话出故障了”。
采取以下的措施可以尽量减少用户的厌烦:
? 为用户提供问题提交表单
? 页面提供用户名/密码验证 (每个对话验证一次,下一次用户登录是能记住用户信息)
? 页面提供两个表单元素 1) 反映问题的文字框2)提交按钮
写文章:教/学
我希望这篇文章能对你有所帮助,或者让你的大脑充满了10001100110010。你看看,你并不是必须成为专家才能和大家共享你的知识。你不必成为一个教授,也不必成为一个教师才能写教程。每一点小小的知识都能帮助别人。
幸运的是,现在我看到越来越多的人在讨论linux, 我看到他们中的大多数人都在测试linux,在一些人进行了一段时间的同时一些人很快放弃了。这些人可能完全没有unix命令的使用经验和概念,然而他们却可能和遇到的问题斗争了一段时间。如果你精神饱满的面对遇到的问题,那么你可以成为最好的教师,如果你认为你没有任何的资料写文章来帮助linux社团,你可以自愿的将本文翻译成你的母语。
资源列表:
PAM LDAP Module
pam_ldap 模块为Solarish和linux工作站提供LDAP目录认证,以及更改其在目录中的密码。
openLDAP
OpenLDAP 项目是一个协作开发强健的、商业等级的、具有丰富特性的、并且是开放源码的LDAP应用程序和工具的项目。该项目由一个全世界志愿者组成的社团管理,该社团利用Internet来交流、计划和开发OpenLDAP 软件和文档。
Java based excellent LDAP Browser/Editor
LDAP 浏览器/编辑器提供用户友好界面LDAP目录编辑工具。由JFC (SwingSet) 和JNDI 类库写成。可以连接第二和第三版LDAP 服务器。
kldap
kldap 是一个KDE的LDAP客户端(浏览器) 。你可以象你熟悉的Novell Administrator那样浏览LDAP目录。
http://freshmeat.net/search.php3?query=ldap
Freshmeat 站点上大量的LDAP相关工具。
http://www.redbooks.ibm.com/abstracts/sg245110.html
IBM的LDAP实现手册。你可以在线浏览或购买。
ypldapd - nis 2 ldap gateway
Ypldapd 是一个网络信息服务(NIS) 服务器,它使用LDAP作为数据源。通过ypldapd,现存的NIS 客户可以透明地使用LDAP来查询用户、组和主机信息。企业可以充分地获得LDAP所带来的好处,比如扩展性等而不用升级客户端。
Introduction to the SLAPD and SLURPD Administrator's Guide
必读的关于LDAP的教程。
An LDAP RaodMap & FAQ
一个关于LDAP和X.500目录服务的资源教程。
http://www.umich.edu/~dirsvcs/ldap/index.html
轻量目录访问协议。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -