OpenLDAP集中管理用户帐号学习笔记.docx_第1页
OpenLDAP集中管理用户帐号学习笔记.docx_第2页
OpenLDAP集中管理用户帐号学习笔记.docx_第3页
OpenLDAP集中管理用户帐号学习笔记.docx_第4页
OpenLDAP集中管理用户帐号学习笔记.docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OpenLDAP集中管理用户帐号学习笔记上一篇 / 下一篇 2009-09-28 12:14:39 / 个人分类:操作系统 查看( 179 ) / 评论( 1 ) / 评分( 0 / 0 ) OpenLDAP集中管理用户帐号学习笔记/thread-913889-1-1.html本文使用Redhat Enterprice Linux 4.0版本测试,并成功实现。 经过2年多的测试和使用,在CentOS 5.x/Cent OS4.x/RHEL4.x/RHEL 5.x都没有任何问题。 只是软件包的版本有所所区别而已;服务器端配置完全一样,客户端配置仅命令不同而已。openldap为系统自带工具,可以在安装时选择相应软件包安装或用rpm命令安装。需要的包为(RHEL4):openldap-2.2.13-2:包含 OpenLDAP 配置文件、库和文档openldap-servers-2.2.13-2:包含 slapd 和 slurpd 服务器、迁移脚本和相关文件openldap-clients-2.2.13-2:包含客户机程序,用来访问和修改 OpenLDAP 目录启动:#service ldap start或#/etc/init.d/ldap start或#/etc/rc.d/init.d/ldap start将start参数改为restart或stop来重启或停止ldap服务。设定在开机时自动启动:#chkconfig ldap on作为练习,可将系统的防火墙关闭;至于实际应用需打开的端口请自行参考iptables相关文档。关闭iptables防火墙:#service iptables stop或#/etc/init.d/iptables stop下面配置ldap。一、配置ldap服务器的账户修改:在配置文件/etc/openldap/slapd.conf中加入以下行:loglevel 296local4.debug /var/log/slapd.log#上面两行定义了ldap服务器执行的日志access to attrs=shadowLastChange,userPassword by self write by * authaccess to * by * read#access 行定义了谁可以访问目录中的内容。我们希望用户可以修改自己的密码,并更新自己的 shadow 信息来反映密码的变化。希望身份验证程序能够检索用户的密码。还希望用户能够读取所有其他条目。注意密码条目是不可读的,shadow 属性的惟一用处就是管理密码的过期问题。二、配置ldap服务器的数据库:修改文件/etc/openldap/slapd.conf的以下行:database bdbsuffix dc=my-domain,dc=comrootdn cn=Manager,dc=my-domain,dc=com把my-domain改为你的“域名”,本文中并不需要真正的域名,只是ldap的一个容器,但为了ldap的其他服务,建议用你的真实域名。这里定义了ldap的数据库和管理者。这里还需要一个管理员密码,加入下面这行(密码111111):rootpw MD5lueSGJZetyySpUndWjMBEg=密码可以用slappasswd命令生成,slappasswd -h MD5,ldap服务器配置完成了,可以重新启动一下ldap服务器了。三、将用户账户信息添加到ldap数据库Redhat Enterprice Linux 4自带了一组perl脚本来转换本地用户的信息。相关工具也可以到/下载这些脚本默认位于/usr/share/openldap/migration/下修改migrate_common.ph文件,我们的目的来说,只需要修改命名前缀的变量来使用条目的识别名就足够了,如下所示:$DEFAULT_BASE = dc=my-domain,dc=com然后执行:migrate_base.pl base.ldif这是创建根项,并为 Hosts、Networks、Group 和 People 等创建第一级的组织单元(OU)编辑 base.ldif,删除除下面之外的所有条目:dn: dc=my-domain,dc=comdc: my-domainobjectClass: topobjectClass: domaindn: u=People,dc=my-domain,dc=comou: PeopleobjectClass: topobjectClass: organizationalUnitdn: u=Group,dc=my-domain,dc=comou: GroupobjectClass: topobjectClass: organizationalUnit执行:grep ldapuser /etc/group group.ldapuser.in./migrate_group.pl group.ldapuser.in group.ldapuser.ldif导出ldapuser组的信息,以同样方式到处其他组的信息执行:grep ldapuser /etc/passwd passwd.ldapuser.in./migrate_passwd.pl passwd.ldapuser.in passwd.ldapuser.ldif可以复制passwd文件为passwd.in后将passwd.in中系统自带的用户删除后作为脚本的输入参数,这样可以一次转换所有用户。不建议将系统自带用户导入ldap,这样做的好处是万一在ldap认证出现问题的情况下不至于连root账户也不能登录。做完账户信息转换后即可以导入ldap数据了,执行:ldapadd -x -D cn=Manager,dc=my-domain,dc=com -W -f base.ldifldapadd -x -D cn=Manager,dc=my-domain,dc=com -W -f group.ldifldapadd -x -D cn=Manager,dc=my-domain,dc=com -W -f passwd.ldif这里的group.ldif和passwd.ldif对应的你的组信息和用户信息的文件,注base.ldif必须最先导入。四、配置系统使用ldap认证系统用户使用authconfig命令配置: 注若使用RHEL5.x 或 Cent OS 5.x 则使用setup命令,然后选择“Authentication Configuratio”把以下选项选上:Use LDAPUse MD5 PasswordsUse Shadow PasswordsUse LDAP AuthenticationLocal authorization is sufficient(如果有此项)选择下一步:请勿选择使用TLS!输入ldap服务器地址或主机名,若有一台以上ldap服务器则用空格隔开。输入base dn:dc=my-domain,dc=com(参考base.ldif文件)将passwd、shadow、以及group文件备份后清除已经导入的用户信息,再用id命令测试一下,确认用户信息正确。OK!大功告成!其他客户机只需执行行本文第四步即可!注:若ldap服务器使用主机名,客户端必需能解析到该主机!注:添加新用户可以先建立本地用户再参照本文第四步操作,加入ldap后再删除本地用户。注:若用户非数据库高手,编辑用户或组信息请务必使用ldapmodify命令,本人曾使用ldapphpadmin修改ldap数据库,结果,呵呵!注:(2009-02-09)在RHEL 5.x和CentOS5.x 上执行启动ldap服务时会报错bdb_db_open: Warning - No DB_CONFIG file found in directory /var/lib/ldap,该错误不影响ldap验证服务;若一定要解决,执行以下命令即可:cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG ; chown ldap:ldap /var/lib/ldap/DB_CONFIG更新2009-1-20添加管理用户帐号的脚本:文本写了一个简单的创建用户帐号的脚本方便帐号管理。文中以中文和#开头的是注释和说明:注,编辑脚本时别忘了把“#!/bin/sh”放在脚本文件的首行!#!/bin/sh# Input the user accountif $1 = ;then printf Please input the user account: read ans1 user=$ans1 echo nelse user=$1fi#提示用户输入用户名赋值给变量user# make sure the username is uniqueexistuser= id $ans1 2 /dev/null while $existuser != do echo user $user already exist! printf Please input another username: read ans3 user=$ans3 existuser= id $ans1 2 /dev/null echo done检查输入的用户名是否唯一,如果已经存在则提示用户再次输入用户名并赋值给变量user# adding useruseradd -g group1 -d /NFS/user/$user -m $userpasswd $user#在本地文件里添加用户并设定用户密码,#注1、这里的group1是指定默认组的组名,请自行更改#注2、这里的/NFS/user/是从远程主机上mount过来的,用于配合automount服务并统一用户主目录使用,请自行更改#注3、-m选项是当指定的用户主目录不存在时自动创建该目录,在大多数情况下这是默认选项,即不加该选项,系统会自动加上sed -i s/NFS/user/$user/home/$user/g /etc/passwdcd /ldapsettings/grep $user /etc/passwd newuser.in/usr/share/openldap/migration/migrate_passwd.pl newuser.in newuser.ldifldapadd -x -D cn=Manager,dc=dam,dc=com -w 1234567 -f /ldapsettings/newuser.ldifrm -f /ldapsettings/newuser.inrm -f /ldapsettings/newuser.ldifsed -i /$user:/d /etc/passwdsed -i /$user:/d /etc/shadow#修改用户的home目录,并将本地的帐号信息导入ldap数据库,删除临时文件,删除本地用户验证信息更新2009-2-3一直在网上找用ldap验证samba的文章。很多,但是都需要加入域,配置很麻烦,而且,samba毕竟和windows的域有太大差别了!下文的配置其实只是让samba读取ldap数据库来代替读取sampasswd文件,仅此而已!本文参考了下文,做了适当修改,并在CentOS 4.X 和CentOS 5.X 上测试成功:使用openldap目录服务进行samba用户验证/note/opensource/samba.htmsamba可把用户信息存放到ldap目录服务器上,使用目录服务器上的用户数据进行用户验证。这样做的好处是:1.集中存放用户信息,多台Samba服务器可共用一套用户数据。2.当用户数量多时,采用ldap目录服务器可加快用户验证的速度。因为ldap目录服务是专门为读操作而优化的,搜索数据的速度是非常快的。3.用户可自由更改自已的密码,而不用经过系统管理员,可大大减轻系统管理员的工作量。一、配置ldap服务要 openldap能认识samba的用户信息,我们需在openldap服务器中导入samba.schema。该文件是不包含在openldap源码中的,我们可在samba源码目录中的/examples/LDAP路径中找到该文件。把它拷贝到openldap的schema目录。接着编辑 slapd.conf文件,用include指令把samba.schema导入openldap。如:到这里下载samba的源码包:/samba/ # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema #include /etc/openldap/schema/redhat/autofs.schema include /etc/openldap/schema/samba.schema #导入samba.schema文件 # Allow LDAPv2 client connections. This is NOT the default. allow bind_v2重启ldap服务,使配置生效。 rootlinux5 # service ldap restart Stopping slapd: OK Checking configuration files for slapd: config file testing succeeded Starting slapd: OK 二、配置samba服务下来我们要配置samba服务器了。打开smb.conf文件,添加以下内容: # You may wish to use password encryption. Please read ENCRYPTION.txt, # Win95.txt and WinNT.txt in the Samba documentation. Do not enable this # option unless you have read those documents security = user #如果原来不是user,请改成user,因为我原来用的是share encrypt passwords = yes ; passdb backend = smbpasswd guest #取消smbpasswd验证 ldap admin dn = cn=Manager,dc=my-domain,dc=com #指定管理员,请参考slapd.conf文件 passdb backend = ldapsam:ldap:/ #指定用户验证的ldap目录服务器的IP地址或主机名 ldap user suffix = dc=samba,dc=my-domain,dc=com #用户信息存放的目录路径 ldap delete dn = no #不允许删除dn ldap suffix = dc=my-domain,dc=com #指定搜索后缀存盘退出,重启smb服务。运行以下命令,把cn=Manager,dc=my-domain,dc=com管理员的密码“123456”保存到secrets.tdb文件中,以便samba服务器与openldap服务器进行通信。 rootlinux5 # service smb restart Shutting down SMB services: OK Shutting down NMB services: OK Starting SMB services: OK Starting NMB services: OK rootlinux5 # smbpasswd -w 123456 Setting stored password for cn=Manager,dc=my-domain,dc=com in secrets.tdb #成功保存的提示信息千万注意!这里的密码“123456”,就是slapd.conf文件里指定的管理员的密码!配置完成,使用smbpasswd命令就可把用户信息保存到ldap目录服务器上了。 rootlinux5 # smbpasswd -a dwang New SMB password: Retype new SMB password: Added user dwang. #成功添加用户三、设定ldap服务来维护samba帐号到此为止,使用ldap目录服务器进行Samba用户验证已配置完成。但现在还是要管理员在samba服务器上使用smbpasswd命令为用户维护密码。从维护工作量和保密的角度出发,由用户自已维护自已的密码是一种最好的方法。具体设置方法是这样的:通过目录服务器的权限管理,我们也可把test用户密码属性设置成只有 dn是cn=dwang,dc=samba,dc=it,dc=com的用户和目录服务器管理员才能修改。要达到该项果,请把以下ACL加入到 slapd.conf中。 access to attrs=sambaLMPassword by dn=cn=Manager,dc=newavetech,dc=com write by anonymous auth by self write by * none access to attrs=sambaNTPassword by dn=cn=Manager,dc=newavetech,dc=com write by anonymous auth by self write by * none重启openldap服务器使配置生效。用smbpasswd命令就能修改用户的密码了,不过别忘了原始密码,否则又得劳驾管理员了!根据密码复杂度要求,用户自己设的密码至少要有6位,以root权限执行没此要求。(2009-02-11)偶然发现了一款LDAP的管理工具LDAP Account Manager,主页在:/projects/lam因为我使用的是CentOS 5.2,直接下载rpm包安装:ldap-account-manager-2.5.0-0.fedora.1.noarch.rpm安装需求:LAM是用php编写的,基于web管理。所以apache、php是不能少的,还需要个别的rpm包稍后介绍,只要你有CentOS的光盘就无需担心。一、安装LAM#rpm -ivh ldap-account-manager-2.5.0-0.fedora.1.noarch.rpm安装完后在文件夹/var/www/html/下会有一个lam文件夹。#cd /var/www/html/lam/config#cp cp config.cfg_sample config.cfg#cp lam.conf_sample ldapserver1.conf说明:1、config.cfg是LAM的通用配置文件2、ldapserver1.conf是LAM的服务器配置文件,如果你有多台ldap服务器就需要多复制几个文件,例如:#cp lam.conf_sample ldapserver2.conf#cp lam.conf_sample ldapserver3.conf#chown -R apache:apache /var/www/html/lam这里的ldapserver?文件名可任意,它就是你在使用LAM时看到的配置文件,建议使用ldapserver的主机名。二、配置LAM用浏览器访问LAM,在浏览器里打开http:/lamserver/lam/有可能出现如下提示:#Your PHP has no LDAP support!Please install the LDAP extension for PHP.#Please increase the memory_limit parameter in your php.ini to at least 64M.Your current memory limit is 16M.#上面的问题缺少了php-ldap包,在CentOS5.2里,执行下面命令即可:#rpm -ivh php-ldap-5.1.6-20.el5.i386.rpm下面的问题是PHP内存限制的问题,修改PHP配置文件即可,执行如下命令:#sed -i /memory_limit/s/.*/memory_limit = 64M/ /etc/php.ini以上命令是将文件/etc/php.ini中含有memory_limit的那行设定改为“memory_limit = 64M“,也可以用vi命令编辑。安装完rpm包和修改了配置文件后重启apache服务器:#service httpd restart再次用浏览器访问LAM,在浏览器里打开http:/lamserver/lam/,一切正常。在右上角选择LAM configuration-Edit general settings,密码是lam,进去后重新设定密码;其他设定我没作修改。回到主页,在右上角选择LAM configuration-Edit server profiles;在下拉框里选择你复制的配置文件,进入配置。默认密码为“lam“,接下来就是根据你的ldap服务器的设定在修改你复制过的配置文件,进去后别忘了修改密码哦!配置完成。下面是我认为有必要修改的一些选项:#服务器地址树状结构后缀用户: 最小UID号时区组: 最小GID号缺省语言合法用户列表编辑帐号类型:里面的所有LDAP后缀#三、使用LAM在LAM主页选择你要维护的配置文件,输入密码。开始体验便捷的ldap帐号管理吧!注:这里的密码不是上文修改过的LAM密码,是在LDAP server上配置LDAP配置文档里的管理员密码哦!(200903

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论