cnhnln 发表于 2007-4-20 14:14:40

OpenLDAP集中管理用户帐号学习笔记

OpenLDAP集中管理用户帐号学习笔记

  本文使用Redhat Enterprice Linux 4.0版本测试,并成功实现。
  openldap为系统自带工具,可以在安装时选择相应软件包安装或用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脚本来转换本地用户的信息。
  相关工具也可以到http://www.padl.com/下载
  这些脚本默认位于/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后再删除本地用户。
  注1:若用户非数据库高手,编辑用户或组信息请务必使用ldapmodify命令,本人曾使用ldapphpadmin修改ldap数据库,结果,呵呵!!



__________________________________


--


页: [1]
查看完整版本: OpenLDAP集中管理用户帐号学习笔记