Chinaunix首页 | 论坛 | 博客
  • 博客访问: 597130
  • 博文数量: 70
  • 博客积分: 3219
  • 博客等级: 中校
  • 技术积分: 1197
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-13 12:20
个人简介

谢谢您的对我的博客的关心,同时希望这个站点真的能够对您有所帮助。 如果可以请告诉我你的联系方式(可能的话告诉我两个或更多,我不希望失去任何一个关注本主页人士的联系,不论你是我的老友,或是一位新朋友,对于我来说您十分重要)

文章分类
文章存档

2021年(1)

2020年(13)

2018年(1)

2013年(12)

2012年(2)

2009年(2)

2008年(6)

2007年(20)

2006年(13)

分类: LINUX

2007-03-22 18:07:51

OpenLDAP集中管理用户帐号学习笔记
  本文以Redhat Enterprice Linux 4.0版本为基础,并成功实现。其它linux发行版请读者自行测试。
  Squid为系统自带软件,可以在安装时选择相应软件包安装或用rpm命令安装。
  需要的包为:
  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 296
  local4.debug /var/log/slapd.log
  #上面两行定义了ldap服务器执行的日志
  access to attrs=shadowLastChange,userPassword
      by self write
      by * auth
  access to *
      by * read
  #access 行定义了谁可以访问目录中的内容。我们希望用户可以修改自己的密码,并更新自己的 shadow 信息来反映密码的变化。希望身份验证程序能够检索用户的密码。还希望用户能够读取所有其他条目。注意密码条目是不可读的,shadow 属性的惟一用处就是管理密码的过期问题。
  二、配置ldap服务器的数据库:
  修改文件/etc/openldap/slapd.conf的以下行:
  database        bdb
  suffix          "dc=my-domain,dc=com"
  rootdn          "cn=Manager,dc=my-domain,dc=com"
  把my-domain改为你的“域名”,本文中并不需要真正的域名,只是ldap的一个容器,但为了ldap的其他服务,建议用你的真实域名。
  这里定义了ldap的数据库和管理者。
  这里还需要一个管理员密码,加入下面这行(密码111111):
  rootpw {MD5}lueSGJZetyySpUndWjMBEg==
  密码可以用slappasswd命令生成,slappasswd -h {MD5}
  OK,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=com
  dc: my-domain
  objectClass: top
  objectClass: domain
  dn: ou=People,dc=my-domain,dc=com
  ou: People
  objectClass: top
  objectClass: organizationalUnit
  dn: ou=Group,dc=my-domain,dc=com
  ou: Group
  objectClass: top
  objectClass: 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.ldif
  ldapadd -x -D "cn=Manager,dc=my-domain,dc=com" -W -f group.ldif
  ldapadd -x -D "cn=Manager,dc=my-domain,dc=com" -W -f passwd.ldif
  这里的group.ldif和passwd.ldif对应的你的组信息和用户信息的文件,注base.ldif必须最先导入。
  四、配置系统使用ldap认证系统用户
  使用authconfig命令配置:
  把以下选项选上:
  Use LDAP
  Use MD5 Passwords
  Use Shadow Passwords
  Use LDAP Authentication
  Local authorization is sufficient(如果有此项)
  选择下一步:
  请勿选择使用TLS!
  输入ldap服务器地址或主机名,若有一台以上ldap服务器则用空格隔开。
  输入base dn:dc=my-domain,dc=com(参考base.ldif文件)
  将passwd、shadow、以及group文件备份后清除已经导入的用户信息,再用id命令测试一下,确认用户信息正确。
  OK!!大功告成!!

  其他客户机只需执行行本文第四步即可!
  注1:若ldap服务器使用主机名,客户端必需能解析到该主机!
  注2:添加新用户可以先建立本地用户再参照本文第四步操作,加入ldap后再删除本地用户。
  注3:若用户非数据库高手,编辑用户或组信息请务必使用ldapmodify命令,本人曾使用ldapphpadmin修改ldap数据库,结果,呵呵!!
  注4:Redhat Enterprise Linux 5以上版本的authconfig命令在终端下不在提供图形界面,但在图形界面下有相关配置工具,注意在编辑ldap.conf文件指定ldap服务器时的格式为“uri ldap://ldapserver1 ldap://ldapserver2 ldap://ldapserver3”

阅读(3340) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

mjwdj2008-12-12 17:52:37

关于使用ldap关了帐户后的维护和管理请参考《OpenLDAP集中管理用户帐号(续)》 链接地址:http://blog.chinaunix.net/u/13902/showart.php?id=1710654