【1】 LDAP简介
LDAP(Lightweight Directory Access Protocol) 代表轻量级目录访问协议
LDAP 是一种非关系型数据库
LDAP 可扩展性和灵活性良好 安装和配置简单
【2】 几个重要的概念
dn : 一条记录的位置
dc : 一条记录的所属区域
ou : 一条记录的所属组织
cn/uid: 一条记录的名字/ID
【3】 LDAP数据添充原理
把一个庞大的学生档案放到LDAP里 具体步骤:
1】 建立一个"dc=ourschool,dc=org“的树根" 通过编辑"slapd.conf"来实现
2】 建立18个系分别是
dnu=computer,dc=ourschool,dc=org
dnu=film,dc=ourschool,dc=org
...
3】 在每个系建立专业 如
dnu=Linux,ou=computer,dc=ourschool,dc=org
...
4】 加学生
dn:cn=xiaoming,ou=linux,ou=computer,dc=ourschool,dc=org
5】 学生的详细信息
dn:cn=xiaoming,ou=linux,ou=computer,dc=ourschool,dc=org
objectClass: organizationalPerson
cn:xiaoming
cn:小明
sn:小明
description:a good boy
(以上是一条记录的信息,如果把他保存成LDIF文件,可以导入到LDAP数据库中)
【4】 搭建LDAP认证服务器
1】 安装服务器软件
yum -y install openldap openldap-servers
2】 编译服务器端配置文件(acl 与ldap配合,实现访问控制)
vim /etc/openldap/slapd.conf
access to *
by * read
by * auth
access to *
by self write
database bdb
suffix "dc=example,dc=com"
rootdn "cn=admin,dc=example,dc=com"
rootpw 123456
# Mode 700 recommended. (默认LDAP存放数据的目录 权限:700)
directory /var/lib/ldap
3】利用脚本创建OU,并初始化LDAPS
a】 vim /usr/usr/share/openldap/migration/migrate_common.ph
71:$DEFAULT_MAIL_DOMAIN = "example.com";
74:$DEFAULT_BASE = "dc=example,dc=com";
b】 /usr/share/openldap/migration/migrate_base.pl > /tmp/example.ldif
c】 删掉 example.ldif 中多余的选项 (空行不能省略)
#cat /tmp/example.ldif
dn: dc=example,dc=com
dc: example
objectClass: top
objectClass: domain
dn: ou=People,dc=example,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=example,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
dn: dc=example,dc=com dc: example objectClass: top objectClass: domain dn: ou=People,dc=example,dc=com ou: People objectClass: top objectClass: organizationalUnit dn: ou=Group,dc=example,dc=com ou: Group objectClass: top objectClass: organizationalUnit
d】创建并初始化
#slapadd -vl /tmp/example.ldif
生成信息:
bdb_db_open: Warning - No DB_CONFIG file found in directory
/var/lib/ldap: (2)
Expect poor performance for suffix dc=uplooking,dc=com.
added: "dc=example,dc=com" (00000001)
added: "ou=People,dc=example,dc=com" (00000002)
added: "ou=Group,dc=example,dc=com" (00000003)
bdb_db_open: Warning - No DB_CONFIG file found in directory /var/lib/ldap: (2) Expect poor performance for suffix dc=uplooking,dc=com. added: "dc=example,dc=com" (00000001) added: "ou=People,dc=example,dc=com" (00000002) added: "ou=Group,dc=example,dc=com" (00000003)
e】 解决上步警告
#cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
4】 启动LDAP服务
a】# chown -R ldap /var/lib/ldap
若不改权限 启动失败
b】# service ldap start
或
#/etc/init.d/ldap start
c】 netstat -tunlp | grep :389
验证 服务监听389端口
5】 安装图形管理程序 phpldapadmin
a】#yum -y install httpd php php-ldap
b】 #service httpd restart
c】 #tar zxvf phpldapadmin-1.2.0.4.tgz -C /var/www/html/
d】 #cd /var/www/html/phpldapadmin-1.2.0.4
e】 #vim config/config.php.example config/config.php
f】 #firefox http://localhost/phpldapadmin-1.2.0.4.tgz
g】 输入用户名 密码登录
cn=admin,dc=example,dc=com
123456
6】 以上为LDAP服务器的通用配置
【5】 实现具体功能,用户的非本地验证登录
1】服务器端利用脚本创建用户文件,并用phpldapadmin导入
a】for i in {1..50};do useradd user$i ; echo user$i | passwd --stdin user$i;done
b】 grep ^user /etc/passwd > /tmp/user
grep ^user /etc/group > /tmp/group
c】 /usr/share/openldap/migration/migrate_passwd.pl /tmp/user > /tmp/user.ldif
/usr/share/openldap/migration/migrate_group.pl /tmp/group > /tmp/group.ldif
d】 for i in { 1..50 }; do userdel user$i ;done
e】 导入/tmp/user.ldif 和 /tmp/group.ldif
2】服务器端(192.168.1.221)利用nfs共享用户家目录
a】# vim /etc/exports
/home *(rw,sync)
b】# service nfs restart
3】客户端配置网络验证
a】 #authconfig-tui
选上使用ldap和使用ldap验证 配置ldap服务器
b】# grep ldap /etc/pam.d/system-auth
auth sufficient pam_ldap.so use_first_pass
account [default=badsuccess=okuser_unknown=ignore] pam_ldap.so
password sufficient pam_ldap.so use_authtok
session optional pam_ldap.so
auth sufficient pam_ldap.so use_first_pass account [default=bad success=ok user_unknown=ignore] pam_ldap.so password sufficient pam_ldap.so use_authtok session optional pam_ldap.so
以上是 system-auth文件多出来的内容
#tail -n 3 /etc/openldap/ldap.conf
URI ldap://192.168.1.221/
BASE dc=example,dc=com
TLS_CACERTDIR /etc/openldap/cacerts
URI ldap://192.168.1.221/ BASE dc=example,dc=com TLS_CACERTDIR /etc/openldap/cacerts
以上是openldap客户端配置文件 新增内容
c】# rpm -q openldap-clients
查看是否安装openldap客户端 若未安装,请安装
d】 配置触发挂载家目录
#vim /etc/auto.master
/home /etc/auto.home
vim /etc/auto.home
* -rw 192.168.1.221:/home/&
e】 #service autofs restart
f】 测试成功
【6】 开启网络验证后,客户端登录时,优先使用本地/etc/passwd /etc/shadow文件验证,还是优先使用ldap
#grep ldap /etc/nsswitch.conf -n
36:passwd: ldap files
37:shadow: ldap files
38:group: ldap files
36:passwd: ldap files 37:shadow: ldap files 38:group: ldap files
由 36 37 38 三行的ldap与files顺序决定
本文摘自:http://blog.csdn.net/kakane/article/details/7455922