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) |