网络安全 频道

[推荐]车干子的openldap的详细配置!

OpenLDAP的创建和维护工具
离线创建数据库
如果一下子要创建成千上万的项(entry),用这个方法最合适了,因为用“ldapadd”命令逐个添加要花费相当长的时间。这个工具读取slapd的配置文件和用文本表示的包含所有需要添加的项的输入文件。“ldif2ldbm”的命令语法如下:

[root@deep]# ldif2ldbm -i -f

表示纯文本的LDIF输入文件的文件名。表示slapd配置文件的文件名,这个配置文件设置在什么地方创建索引、创建什么索引,等等。

例如:

[root@deep]# ldif2ldbm -i my-data-file -f /etc/openldap/slapd.conf

纯文本的输入文件的文件名为“my-data-file”

注意:离线创建数据库的时候slapd daemon不能运行。

IDIF输入文件(用文本表示的输入文件)
第一次安装OpenLDAP必须把大量的数据存入OpenLDAP的数据库里。最好把这些数据都用纯文本的文件表示出来,再用下面的命令把数据加入OpenLDAP数据库中。

创建“my-data-file”文件(touch /tmp/my-data-file),下面加入的这些行可以作为参考:

dn: o=openarch, c=com
o: openarch
objectclass: organization
dn: cn=Ronald Smith, o=openarch, c=com
cn: Ronald Smith
sn: Smith
telephonenumber: (480) 757-5856
title: Operator.
objectclass: top

objectclass: person
dn: cn=Anthony Bay, o=openarch, c=com
cn: Anthony Bay
sn: Bay
homephone: (410) 896-3786
mobile: (410) 833-0590
mail: abay@openarch.com
objectclass: top
objectclass: person
dn: cn=George Parker, o=openarch, c=com
cn: George Parker
sn: Parker
telephonenumber: (414) 389-5695
fax: (414) 778-8785
mobile: (414) 470-8669
description: E-Commerce.
objectclass: top
objectclass: person

上面的例子文件让你了解了如何把数据库中的信息装成纯文本的信息,再把这些信息加入OpenLDAP数据库中。还有很多的设置选项可以满足你的需要,请查看OpenLDAP的文档或书籍,以获得更多的信息。

为LDAP创建数据库
就像可以往数据库中加入记录那样,也可以用“ldapadd”命令在LDAP中加入项。例如:用“ldapadd”命令加入“Europe Mourani”这一项,先要创建“/tmp/newentry”文件:

创建“newentry”文件(touch /tmp/newentry),在文件中加入下面的内容:

cn=Europe Mourani, o=openarch, c=com
cn=Europe Mourani
sn=Mourani
mail=emourani@old.com
description=Marketing relation.
objectClass=top
objectClass=person

用下面的命令在LDAP中加入这一项:

[root@deep]# ldapadd -f /tmp/newentry -D "cn=admin, o=openarch, c=com" -W

Enter LDAP Password :

上面的命令假定在配置文件中设置“rootdn”为“cn=admin, o=openarch, c=com”,“rootpw”设置为“secret”。命令还会提示输入口令。

ldapmodify
“ldapmodify”命令建立到LDAP服务器的连接,绑定、修改和加入数据项。通过使用“-f”参数可以设置从标准输入还是文件中得到数据项的信息。

用于“ldapmodify”命令的输入文件的格式:

假定“/tmp/entry”文件存在,而且文件的内容是:

cn=Europe Mourani, o=openarch, c=com
- mail=emourani@old.com # will delete the old mail address for Europe Mourani in the database.
+mail=emourani@new.com # will add the new mail address for Europe Mourani in the database.

用下面的命令改变LDAP中的数据项:

[root@deep]# ladpmodify -D ‘cn=Admin, o=openarch, c=com’ -W -f

这个命令改变了“Europe Mourani”数据项的mail属性,把这个属性值改为:emourani@new.com。

OpenLDAP的用户工具
下面列出的是一些我们经常要用到的命令,当然还有很多其它的命令,更详细的信息可以查看man帮助页或其它文档。

搜索LDAP的数据项
“ldapsearch”命令建立到LDAP服务器的连接、绑定并用过滤器进行搜索。

用下面的命令搜索LDAP数据库中的数据项:

[root@deep]# ldapsearch -b
[root@deep]# ldapsearch -b ‘o=openarch.com’ ‘cn=a*’

这个命令把所有以字母“a”开头的数据项的信息显示在道标准输出上。

安装到系统中的文件
> /etc/openldap
> /etc/openldap/ldap.conf
> /etc/openldap/ldap.conf.default
> /etc/openldap/ldapfilter.conf
> /etc/openldap/ldapfilter.conf.default
> /etc/openldap/ldaptemplates.conf
> /etc/openldap/ldaptemplates.conf.default
> /etc/openldap/ldapsearchprefs.conf
> /etc/openldap/ldapsearchprefs.conf.default
> /etc/openldap/slapd.conf
> /etc/openldap/slapd.conf.default
> /etc/openldap/slapd.at.conf
> /etc/openldap/slapd.at.conf.default
> /etc/openldap/slapd.oc.conf
> /etc/openldap/slapd.oc.conf.default
> /etc/openldap/ldapserver
> /etc/rc.d/init.d/ldap
> /etc/rc.d/rc0.d/K40ldap
> /etc/rc.d/rc1.d/K40ldap
> /etc/rc.d/rc2.d/K40ldap
> /etc/rc.d/rc3.d/S70ldap
> /etc/rc.d/rc4.d/S70ldap
> /etc/rc.d/rc5.d/S70ldap
> /etc/rc.d/rc6.d/K40ldap
> /usr/bin/ud
> /usr/bin/ldapsearch
> /usr/bin/ldapmodify
> /usr/bin/ldapdelete
> /usr/bin/ldapmodrdn
> /usr/bin/ldappasswd
> /usr/bin/ldapadd
> /usr/include/ldap.h
> /usr/include/lber.h
> /usr/include/ldap_cdefs.h
> /usr/man/man3/ldap_open.3
> /usr/man/man3/ldap_errlist.3
> /usr/man/man3/ldap_err2string.3
> /usr/man/man3/ldap_first_attribute.3
> /usr/man/man3/ldap_next_attribute.3
> /usr/man/man3/ldap_first_entry.3
> /usr/man/man3/ldap_next_entry.3
> /usr/man/man3/ldap_count_entries.3
> /usr/man/man3/ldap_friendly.3
> /usr/man/man3/ldap_friendly_name.3
> /usr/man/man3/ldap_free_friendlymap.3
> /usr/man/man3/ldap_get_dn.3
> /usr/man/man3/ldap_explode_dn.3
> /usr/man/man3/ldap_explode_dns.3
> /usr/man/man3/ldap_dn2ufn.3
> /usr/man/man3/ldap_is_dns_dn.3
> /usr/man/man3/ldap_get_values.3
> /usr/man/man3/ldap_get_values_len.3
> /usr/man/man3/ldap_value_free.3
> /usr/man/man3/ldap_value_free_len.3
> /usr/man/man3/ldap_count_values.3
> /usr/man/man3/ldap_count_values_len.3
> /usr/man/man3/ldap_getfilter.3
> /usr/man/man3/ldap_init_getfilter.3
> /usr/man/man3/ldap_init_getfilter_buf.3
> /usr/man/man3/ldap_getfilter_free.3
> /usr/man/man3/ldap_getfirstfilter.3
> /usr/man/man3/ldap_getnextfilter.3
> /usr/man/man3/ldap_setfilteraffixes.3
> /usr/man/man3/ldap_build_filter.3
> /usr/man/man3/ldap_modify.3
> /usr/man/man3/ldap_modify_s.3
> /usr/man/man3/ldap_mods_free.3
> /usr/man/man3/ldap_modrdn.3
> /usr/include/disptmpl.h
> /usr/include/srchpref.h
> /usr/lib/liblber.so.1.0.0
> /usr/lib/liblber.so.1
> /usr/lib/liblber.so
> /usr/lib/liblber.la
> /usr/lib/liblber.a
> /usr/lib/libldap.so.1.0.0
> /usr/lib/libldap.so.1
> /usr/lib/libldap.so
> /usr/lib/libldap.la
> /usr/lib/libldap.a
> /usr/man/man1/ud.1
> /usr/man/man1/ldapdelete.1
> /usr/man/man1/ldapmodify.1
> /usr/man/man1/ldapadd.1
> /usr/man/man1/ldapmodrdn.1
> /usr/man/man1/ldappasswd.1
> /usr/man/man1/ldapsearch.1
> /usr/man/man3/cldap_close.3
> /usr/man/man3/cldap_open.3
> /usr/man/man3/cldap_search_s.3
> /usr/man/man3/cldap_setretryinfo.3
> /usr/man/man3/lber-decode.3
> /usr/man/man3/lber-encode.3
> /usr/man/man3/ldap.3
> /usr/man/man3/cldap.3
> /usr/man/man3/ldap_abandon.3
> /usr/man/man3/ldap_add.3
> /usr/man/man3/ldap_add_s.3
> /usr/man/man3/ldap_bind.3
> /usr/man/man3/ldap_bind_s.3
> /usr/man/man3/ldap_simple_bind.3
> /usr/man/man3/ldap_simple_bind_s.3
> /usr/man/man3/ldap_kerberos_bind_s.3
> /usr/man/man3/ldap_kerberos_bind1.3
> /usr/man/man3/ldap_kerberos_bind1_s.3
> /usr/man/man3/ldap_kerberos_bind2.3
> /usr/man/man3/ldap_kerberos_bind2_s.3
> /usr/man/man3/ldap_unbind.3
> /usr/man/man3/ldap_unbind_s.3
> /usr/man/man3/ldap_set_rebind_proc.3
> /usr/man/man3/ldap_cache.3
> /usr/man/man3/ldap_enable_cache.3
> /usr/man/man3/ldap_disable_cache.3
> /usr/man/man3/ldap_destroy_cache.3
> /usr/man/man3/ldap_flush_cache.3
> /usr/man/man3/ldap_uncache_entry.3
> /usr/man/man3/ldap_uncache_request.3
> /usr/man/man3/ldap_set_cache_options.3
> /usr/man/man3/ldap_charset.3
> /usr/man/man3/ldap_set_string_translators.3
> /usr/man/man3/ldap_enable_translation.3
> /usr/man/man3/ldap_translate_from_t61.3
> /usr/man/man3/ldap_translate_to_t61.3
> /usr/man/man3/ldap_t61_to_8859.3
> /usr/man/man3/ldap_8859_to_t61.3
> /usr/man/man3/ldap_compare.3
> /usr/man/man3/ldap_compare_s.3
> /usr/man/man3/ldap_delete.3
> /usr/man/man3/ldap_delete_s.3
> /usr/man/man3/ldap_disptmpl.3
> /usr/man/man3/ldap_modrdn_s.3
> /usr/man/man3/ldap_modrdn2.3
> /usr/man/man3/ldap_modrdn2_s.3
> /usr/man/man3/ldap_init.3
> /usr/man/man3/ldap_result.3
> /usr/man/man3/ldap_msgfree.3
> /usr/man/man3/ldap_search.3
> /usr/man/man3/ldap_search_s.3
> /usr/man/man3/ldap_search_st.3
> /usr/man/man3/ldap_searchprefs.3
> /usr/man/man3/ldap_init_searchprefs.3
> /usr/man/man3/ldap_init_searchprefs_buf.3
> /usr/man/man3/ldap_free_searchprefs.3
> /usr/man/man3/ldap_first_searchobj.3
> /usr/man/man3/ldap_next_searchobj.3
> /usr/man/man3/ldap_sort.3
> /usr/man/man3/ldap_sort_entries.3
> /usr/man/man3/ldap_sort_values.3
> /usr/man/man3/ldap_sort_strcasecmp.3
> /usr/man/man3/ldap_ufn.3
> /usr/man/man3/ldap_ufn_search_s.3
> /usr/man/man3/ldap_ufn_search_c.3
> /usr/man/man3/ldap_ufn_search_ct.3
> /usr/man/man3/ldap_ufn_setprefix.3
> /usr/man/man3/ldap_ufn_setfilter.3
> /usr/man/man3/ldap_ufn_timeout.3
> /usr/man/man3/ldap_url.3
> /usr/man/man3/ldap_is_ldap_url.3
> /usr/man/man3/ldap_url_parse.3
> /usr/man/man3/ldap_free_urldesc.3
> /usr/man/man3/ldap_url_search.3
> /usr/man/man3/ldap_url_search_s.3
> /usr/man/man3/ldap_url_search_st.3
> /usr/man/man5/ldap.conf.5
> /usr/man/man5/ldapfilter.conf.5
> /usr/man/man5/ldapfriendly.5
> /usr/man/man5/ldapsearchprefs.conf.5
> /usr/man/man5/ldaptemplates.conf.5
> /usr/man/man5/ldif.5
> /usr/man/man5/slapd.conf.5
> /usr/man/man5/slapd.replog.5
> /usr/man/man5/ud.conf.5
> /usr/man/man8/centipede.8
> /usr/man/man8/chlog2replog.8
> /usr/man/man8/edb2ldif.8
> /usr/man/man8/go500.8
> /usr/man/man8/go500gw.8
> /usr/man/man8/in.xfingerd.8
> /usr/man/man8/ldapd.8
> /usr/man/man8/ldbmcat.8
> /usr/man/man8/ldif.8
> /usr/man/man8/ldif2ldbm.8
> /usr/man/man8/ldif2index.8
> /usr/man/man8/ldif2id2entry.8
> /usr/man/man8/ldif2id2children.8
> /usr/man/man8/mail500.8
> /usr/man/man8/fax500.8
> /usr/man/man8/rcpt500.8
> /usr/man/man8/slapd.8
> /usr/man/man8/slurpd.8
> /usr/sbin/ldif
> /usr/sbin/in.xfingerd
> /usr/man/man3/ldap_init_templates.3
> /usr/man/man3/ldap_init_templates_buf.3
> /usr/man/man3/ldap_free_templates.3
> /usr/man/man3/ldap_first_disptmpl.3
> /usr/man/man3/ldap_next_disptmpl.3
> /usr/man/man3/ldap_oc2template.3
> /usr/man/man3/ldap_tmplattrs.3
> /usr/man/man3/ldap_first_tmplrow.3
> /usr/man/man3/ldap_next_tmplrow.3
> /usr/man/man3/ldap_first_tmplcol.3
> /usr/man/man3/ldap_next_tmplcol.3
> /usr/man/man3/ldap_entry2text.3
> /usr/man/man3/ldap_entry2text_search.3
> /usr/man/man3/ldap_vals2text.3
> /usr/man/man3/ldap_entry2html.3
> /usr/man/man3/ldap_entry2html_search.3
> /usr/man/man3/ldap_vals2html.3
> /usr/man/man3/ldap_error.3
> /usr/man/man3/ldap_perror.3
> /usr/man/man3/ld_errno.3
> /usr/man/man3/ldap_result2error.3
> /usr/sbin/go500
> /usr/sbin/go500gw
> /usr/sbin/mail500
> /usr/sbin/rp500
> /usr/sbin/fax500
> /usr/sbin/xrpcomp
> /usr/sbin/rcpt500
> /usr/sbin/slapd
> /usr/sbin/ldif2ldbm
> /usr/sbin/ldif2index
> /usr/sbin/ldif2id2entry
> /usr/sbin/ldif2id2children
> /usr/sbin/ldbmcat
> /usr/sbin/centipede
> /usr/sbin/ldbmtest

具体启动脚本时会遇到sladpd进程启动不了的问题,建议用如下方法启动:
#su root -c /usr/local/libexec/slapd -f myslapd.conf
其中slapd被安装在配置文件指定的"libexecdir"目录下,通常为/usr/local/libexec/slpad。
如果启动成功,到同一网络中的一台pc上运行outlook,添加ldap目录服务,然后搜索个人,应该能返回提示"没有符合所搜索项目"之类的提示,说明已经连接到ldap服务器.

但我在用ldapadd添加邮件用户时提示如下错误,请高手指点
#ldapadd -D "cn=manager,dc=openarch,dc=com" -W < mydif.ldif
Enter LDAP Password:
ldap_sasl_interactive_bind_s: No such attribute

:18:


此文章相关评论:
该文章有21个相关评论如下:(点这儿可以发表评论)
samba 发表于: 2002/11/21 09:54am
建议斑竹们把这个转入精华区!
 
samba 发表于: 2002/11/21 10:36am
斑竹你是不是下班了啊?
 
samba 发表于: 2002/11/21 11:58am
我把帖子放在这里了你看看可以进入精华区吗?
 
车干子 发表于: 2002/11/21 12:07pm
哪位高手在redhat上配置过LDAP数据库.我的OpenLdap已经配置好了.测试通过.但在创建库时,.ldif文件中的数据用ldapadd命令导不进去!.ldif文件格式如下:
#----------------------------------------
dn:o=yourdomain,c=us
objectClass:dcObject
objectClass:orgnization
o:yourdomain
dn:cn=Manager,o=yourdomain,c=us
objectClass:organizationlRole
cn:Manager
description:Directory Manager
#......
#---------------------------------------
执行ldapadd命令如下:
[root@linux_test openldap-ldbm]# ldapadd -f mail.ldif -x -D "cn=root,o=yourdomain,c=us" -w secret
提示:
adding new entry "o=yourdomain,c=us"
ldap_add: Already exists

ldif_record() = 68
请大家帮忙分析一下,能告诉我怎么才能把.ldif中的条目添加到ldap库里吗???谢谢

 
samba 发表于: 2002/11/21 01:01pm
爱好openldap的朋友帮忙分析一下啊!
 
samba 发表于: 2002/11/21 02:15pm
改正一点:
*--enable-shared ——————>enable=shared
*--with-gnu-ld -------------->with=gnu-ld
 
samba 发表于: 2002/11/21 05:18pm
好像ldap的脚本不支持chkconfig!
 
车干子 发表于: 2002/11/22 09:22am
基本解决了!!!原因是每次在向ldap库里添加记录时首先添加记录头,就是adding new entry "o=yourdomain,c=us",如果不设置强制添加,则不会导入用户记录,所以必须在ldapadd后加上-c.才能成功导入数据.在outlook端能查找到你导入的用户!!!!

谢谢samba!!!

 
samba 发表于: 2002/11/22 10:41am
车干子,我还是遇到了很多问题的。比如ldap的脚本运行后用ps -ax看不见她的进程啊!
 
车干子 发表于: 2002/11/22 01:43pm
怎么会看不见呢?你是这样运行的吗?
在/usr/local/libexec下执行./slapd start
正确运行后用ps -ef|grep slapd可以查看到4个进程

如果不能正确运行,根据错误提示仔细检查配置文件/usr/local/etc/openldap/slapd.conf
上面的路径都是按照默认路径安装的

 
samba 发表于: 2002/11/22 02:36pm
谢谢你啊!我今天早上刚刚做好了,可以看见进程了!
 
samba 发表于: 2002/11/22 02:57pm
我建议还是把slapd 和 slurpd拷贝到/usr/sbin下去。因为我看在脚本里有
[ -f /usr/sbin/slapd ] || exit 0
[ -f /usr/sbin/slurpd ] || exit 0
这两行程序,所以我以后可以直接用service ldap start 或 stop 或 restart 了!
 
一无所有 发表于: 2002/11/22 02:57pm
不错,建议设为精品!
 
samba 发表于: 2002/11/22 03:03pm
还要谢谢车干子的,我基本上看他的文档再加上自己的揣摩配置成了!你要是有兴趣我们再深入研究!
 
samba 发表于: 2002/11/22 03:54pm
che gan zi 你知道怎么和squirrelmail整合吗?
 
车干子 发表于: 2002/11/23 05:31pm
好好看看PAM方面的资料吧,我正在看,但还没配置成功!!!55555^^^^^^^^^^

http://www.redhat.com/docs/manuals/linux/RHL-7.3-Manual/ref-guide/ch-pam.html

 
samba 发表于: 2002/11/25 09:19am
我觉得squirrelmail已经可以支持和ldap或mysql整合的功能了!
 
车干子 发表于: 2002/11/25 11:26am
我现在研究用PAM如何整合系统认证、SAMBA、LDAP。这三个都配置好了,但在看PAM有点晕,不知道如何下手!!!哪位高手配过呀?最好贴一个例子!谢谢
 
samba 发表于: 2002/11/26 11:34am
PAM-Pluggable Authentication Modules 是Sun公司提出的一种认证机制。他将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活的根据需要给不同的服务配置不同的认证方式而无需更该服务程序,同时也便于向系统中添加新的认证手段。PAM的出现彻底的改变了这种局面,他提供了一个Linux-PAM引擎(一些动态连接库)和一套统一的编程接口(API),并且基于PAM应用程序的认证过程是通过配置文件来定义的,这样不仅将决定权交给了管理员,而且大大的提高了使用的灵活性。PAM最初是集成在solaris里,目前已经移植到其他的系统中,如:Linux,sunos,hp-ux9.0等等。在redhat7.0.和6.0中已经是默认安装的。
  我找到一些关与PAM配置的资料,你想用吗?可是在在书上,我想办法扫描!
 
samba 发表于: 2002/11/27 12:13pm
你这几天是不是很忙啊?PAM的配置我也在看,你有什么好的资料贴出来好吗?
 
jackalwp 发表于: 2003/01/03 02:41pm
我用的是RedHat8。0和openldap2.0,不知怎样才能让openldap支持中文?
http://netadmin.77169.com/HTML/20040102042200.html
0
相关文章