本文从http://forum.ubuntu.org.cn/viewtopic.php?f=54&t=246642转载
这几天在研究LDAP安装,上网找了一大圈还是没整明白,经过无数次的失败和N小时的尝试中终于研究的差不多了。
下面简要说一下流程吧,希望对大家有所帮助:
主要参考:http://www.debuntu.org/ldap-server-and-linux-ldap-clients
http://wiki.ubuntu.org.cn/LDAPClientAuthentication
1. LDAP Server
1.1. 安装
主要安装一下套件:
代码:
# apt-get install slapd ldap-utils migrationtools
按照提示输入相关信息,这样在重新配置的时候就可以作较少的工作了
重新配置
代码:
#dpkg-reconfigure slapd
大致如下:
代码:
Omit OpenLDAP server configuration? ... No
DNS domain name: ... debuntu.local //根据自己需要输入,但必须和后面的相关地方保持一致
Name of your organization: ... Whatever & Co
Admin Password: XXXXX
Confirm Password: XXXXX
OK
BDB
Do you want your database to be removed when slapd is purged? ... No
Move old database? ... Yes
Allow LDAPv2 Protocol? ... No
由于现在新版本的2.4 以上版本的ldap都采用了新的数据库存储技术,因此可能就找不到像大家所说的sldap配置文件了,
现在都用新的数据格式存放在 /etc/ldap/slap.d/ 目录下面,dpkg-reconfigure slapd 可以实现ldap服务端的配置,按照要求填写即可,相信大家都能读懂里面的提示
现在我们已经设置好了域和管理员用户: “admin”
检查一下你是否可以顺利的访问你的LDAP服务:
输入:
代码:
$ ldapsearch -x -b dc=debuntu,dc=local
如果得到如下错误,可能是由于你的服务未开启:
代码:
ldap_bind: Can't contact LDAP server (-1)
启动服务:
代码:
# /etc/init.d/slapd start
1.2 建立数据库
我们可以通过 migrationtools 来很容易的导入本地的用户和用户组数据:
代码:
#cd /usr/share/migrationtools/
我们要先修改 migrationtools 的默认配置文件 migrate_common.ph 里面的参数:
代码:
$DEFAULT_MAIL_DOMAIN = "debuntu.local";
$DEFAULT_BASE = "dc=debuntu,dc=local";
导出本地数据:
代码:
# ./migrate_group.pl /etc/group ~/group.ldif
# ./migrate_passwd.pl /etc/passwd ~/passwd.ldif
可惜上面的脚本并没有帮我们创建 People 和 Group节点ou( Organisation Unit),因此我们要先建立他们,建立一个
people_group.lidf 如下:
代码:
dn: ou=People, dc=debuntu, dc=local
ou: People
objectclass: organizationalUnit
dn: ou=Group, dc=debuntu, dc=local
ou: Group
objectclass: organizationalUnit
其实它的结构就是一棵树,先建立了这棵树的根, dc=debuntu,dc=com ,在dn的表示中都是从儿子到祖先的顺序进行的,在以后的实践中可以发现这一点,结构可以如下图所示两种,我们比较常用的是第二种
附件:
intro_tree.png [ 24.13 KiB | 被浏览 298 次 ]
附件:
intro_dctree.png [ 21.28 KiB | 被浏览 298 次 ]
导入数据库的前阶段工作已经完成
好了,现在我们开始导入数据:
ps:如果people_group.lidf 直接从网页拷贝的话可能会有点问题,得用工具重新编辑一下
代码:
# ldapadd -x -W -D "cn=admin,dc=debuntu,dc=local" -f ~/people_group.ldif
# ldapadd -x -W -D "cn=admin,dc=debuntu,dc=local" -f ~/group.ldif
# ldapadd -x -W -D "cn=admin,dc=debuntu,dc=local" -f ~/passwd.ldif
其中:
* -x 指示我们不用 sasl
* -W 指定要输入密码再进行操作
* -D 识别系统管理员
* -f 指定要输入的文件
到目前为止,服务器端已经建立好了。
2、客户端
首先安装相关套件:
代码:
#apt-get install libnss-ldap libpam-ldap nscd
LDAP Account for root: cn=admin,dc=debuntu,dc=local
Password: XXXX
Make local root database admin: yes
Database require logging in: No
Root login account: cn=admin,dc=debuntu,dc=local
Root login password: XXXX
libnss-ldap 被用于名字解析, libpam-ldap 用 pm 通过LDAP来认证用户, nscd is 是一个查找用户、组、密码的守护进程它会对查询结果进行缓存
接下来修改相关的配置文件: 注意大部分只有 debain用户需要进行修改,ubuntu 9.10+在安装相关套件的时候已经帮你修改好了,所以ubuntu用户只需最后修改一下认证的开关文件就行 nsswitch.conf
代码:
#vi /etc/libnss-ldap.conf
host ldap
base dc=debuntu,dc=local
rootbinddn cn=admin,dc=debuntu,dc=local
#vi /etc/pam_ldap.conf
host ldap
base dc=debuntu,dc=local
rootbinddn cn=admin,dc=debuntu,dc=local
这两个文件比较关键,如果你遇到客户端说
pam_ldap: error trying to bind (Invalid DN syntax)
那么很可能的原因就是 rootbinddn cn=admin,dc=debuntu,dc=local 有问题,因为在配置的时候只是生成 rootbinddn admin,如果是这样的话,那你按照上面的相关提示进行补全再试试吧
代码:
#vi /etc/pam.d/common-account
account sufficient pam_ldap.so
account required pam_unix.so
#if you want user homedir to be created on first login
#session required pam_mkhomedir.so umask=0022 skel=/etc/skel/ silent
代码:
#vi /etc/pam.d/common-auth
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass
代码:
vi /etc/pam.d/common-password
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5
#vi /etc/pam.d/common-session
session sufficient pam_ldap.so
session required pam_unix.so
session optional pam_foreground.so //有些系统可能会提示找不到这个直接注释掉就行,好像是没什么用
最后我们要修改一下nsswitch文件规定系统进行用户认证的规则
代码:
# vim /etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldap
现在你可以在本地进行用户的登入测试了,good luck!
可以先进行
代码:
getent passwd
检查一下是否正常工作了,如果还是不行就请重启电脑再试试吧
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)