LDAP服务器用于统一认证账户信息,有点类似通讯录,实现集中管理用户账户的功能。系统为CentOS6.3。
一、安装openldap
yum install openldap openldap-servers openldap-clients openldap-devel compat-openldap
二、安装Berkeley DB
yum install db4 db4-utils
openldap使用Berkeley DB存储数据。
三、安装web server
由于目录服务是一套复杂的概念,所以这里安装phpLDAPadmin方便于管理。
yum install httpd php php-bcmath php-gd php-mbstring php-xml php-ldap
配置apache、php过程略过。
四、安装phpldapadmin
cd /tmp
wget http://sourceforge.net/projects/phpldapadmin/files/phpldapadmin-php5/1.2.3/phpldapadmin-1.2.3.zip/download
unzip phpldapadmin-1.2.3.zip
cp -R phpldapadmin-1.2.3 /var/www/html/phpldapadmin
cd /var/www/html/phpldapadmin/config
cp config.php.example config.php
五、配置openldap
安装完openldap后我们看到在/etc/openldap目录下有certs、schema、slapd.d三个目录和ldap.conf一个文件。
1)certs目录用于存放TLS认证的CA证书等。
2)(该目录用于旧的配置方法,已废弃)schema目录下有.schema文件和.ldif文件。
3)slapd.d目录是openldap2.4.x的配置目录。/etc/openldap/slapd.d/cn=config存放数据库的配置文件,/etc/openldap/slapd.d/cn=config/cn=schema存放.ldif文件。
4)ldap.conf是openldap client的配置文件。
1、
首先生成管理员密码:
slappasswd
输完两遍密码后会生成一个加密散列字符串,保存下来。
如:
{SSHA}JiW3WU7jREOTOMZKT6CklgJZriLIj738
2、
编辑数据库配置文件,设置域名:
vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif
找到:
olcSuffix: dc=my-domain,dc=com
修改dc:
olcSuffix: dc=ldap,dc=live-in,dc=org
设置目录树后缀(域名),作用是定义根的名字。
找到:
olcRootDN: cn=Manager,dc=my-domain,dc=com
修改dc:
olcRootDN: cn=admin,dc=ldap,dc=live-in,dc=org
设置管理员DN。
PS:LDAP管理员cn默认为Manager,可以改成自己需要的名字。
在olcDatabase={2}bdb.ldif最后添加:
olcRootPW: {SSHA}JiW3WU7jREOTOMZKT6CklgJZriLIj738
设置管理员密码。
3、
指定监控权限:
vim /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif
找到:
dn.base="cn=manager,dc=my-domain,dc=com"
修改为:
dn.base="cn=admin,dc=ldap,dc=live-in,dc=org"
修改默认域名。
4、
设置Database Cache:
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
设置权限:
chown -R ldap:ldap /var/lib/ldap/
测试配置文件是否有错:
slaptest -u
提示:
config file testing succeeded
测试通过。
启动slapd服务:
service slapd start
六、配置phpldapadmin
1、编辑phpldapadmin配置文件
vim /var/www/html/phpldapadmin/config/config.php
找到”Define your LDAP servers in this section”区块。
将:
$servers->setValue('server','host','127.0.0.1');
$servers->setValue('server','port',389);
前的注释去掉。
将:
$servers->setValue('server','base',array(''));
修改为:
$servers->setValue('server','base',array('dc=ldap,dc=live-in,dc=org'));
在array中输入设置的olcSuffix。
将:
$servers->setValue('login','auth_type','session');
前的注释去掉。
2、
设置用户和组:
chown -R apache:apache /var/www/html/phpldapadmin
3、
浏览器访问:http://IP/phpldapadmin/index.php
使用RootDN和RootPW登陆:
cn=admin,dc=ldap,dc=live-in,dc=org
123456
此时左侧目录树会显示:This base cannot be created with PLA.
3、添加根节点
cd /etc/openldap
vim base.ldif
输入:
dn: dc=ldap,dc=live-in,dc=org
o: ldap
objectclass: dcObject
objectclass: organization
添加数据库:
ldapadd -f base.ldif -x -D cn=admin,dc=ldap,dc=live-in,dc=org -W
输入密码后会提示:
adding new entry “dc=ldap,dc=live-in,dc=org”
在浏览器里刷新一下条目就会显示出根节点。
————————-我是分割线————————-
七、接下来做一个实验
A机器为上面安装的LDAP服务器,用户从LDAP服务器上获取账户密码登录另一台B机器。B机器上先搜索本地账户,如果没有就从A机器获得账户。A机器IP为192.168.1.100,B机器IP为192.168.1.200。
phpldapadmin设置
1、浏览器登陆phpldapamdin,点击根节点,点击创建一个子条目,选择Posix Group。创建一个名为ldaptest的组。
2、点击cn=ldaptest,点击创建一个子条目,选择User Account。
3、设定用户名,密码,GID,家目录,登陆的shell。其中的User ID就是登陆的用户名。
客户端(B机器)设置
安装所需的软件包:
yum install openldap-clients pam_ldap nss-pam-ldapd
1、编辑openldap客户端配置文件
vim /etc/openldap/ldap.conf
输入:
URI ldap://192.168.1.100
BASE dc=ldap,dc=live-in,dc=org
在客户端测试下搜索数据库:
ldapsearch -x -b "dc=ldap,dc=live-in,dc=org"
2、
vim /etc/pam_ldap.conf
修改:
host 192.168.1.100
base dc=ldap,dc=live-in,dc=org
3、
使用图形交互界面设置pam和ldap其余内容
authconfig-tui
User Information选择:
Use LDAP
Authentication选择:
Use Shadow Passwords
Use LDAP Authentication
Local authorization is sufficient
PS:交互界面修改了/etc/pam_ldap.conf、/etc/pam.d/system-auth、/etc/nsswitch.conf这三个文件。
4、设置第一次登陆时建立家目录
vim /etc/pam.d/system-auth
在最后添加:
session required pam_mkhomedir.so skel=/etc/skel umask=0022
重启B机器使设置生效。随后使用test1用户名及密码登陆。
显示:
Creating directory ‘/home/users/test1’.
Last login: Fri Feb 8 14:00:54 2013 from 192.168.1.200
-sh-4.1$
登陆成功!
PS1:这里还未设置LDAP服务器的TLS加密。
PS2:debug模式命令slapd -d 1,可以查看交互详细情况。
参考资料:
openldap基础及安装
http://www.overclockers.com/forums/showthread.php?t=707070
http://www.cnblogs.com/obpm/archive/2010/08/28/1811065.html
http://blog.csdn.net/destina/article/details/6188993
http://www.cnblogs.com/adforce/archive/2011/09/15/2177061.html
ldap整合ssh
http://blog.csdn.net/flyoxs/article/details/6007643
兄弟,我按照你的方法来安装啦,在客户端也可以用ldapsearch -x -D “cn=Manager,dc=test,dc=com” -W -b “dc=test,dc=com”查到我新建立的用户ladmin,但是用id ladmin来登陆是出现su: user admin does not exist,请大师帮下忙看是哪里的问题谢谢
有没有连到服务端?会不会建立用户的时候设置有误?
你好 请教个问题哈
按照你的步骤到
phpldapadmin设置
1、浏览器登陆phpldapamdin,点击根节点,点击创建一个子条目,选择Posix Group。创建一个名为ldaptest的组。
//页面提示
Automatically removed objectClass from template
Samba: Group Mapping: posixGroup removed from template as it is not defined in the schema
warn Automatically removed objectClass from template
选择不了Posix Group?是不是缺少了什么配置
你好,参考:http://phpldapadmin.sourceforge.net/wiki/index.php/FAQ#Why_do_i_get_Automatically_removed_objectClass_from_template_when_creating_or_editing.3F
谢谢回答哈,昨天调查的时候也看到了这个
您知道Define the missing objectClass to your LDAP server’s schema (you’ll need to follow your LDAP server’s instructions for this)怎么配置?
其它三种方法只是屏蔽了这种错误,尝试了是可以
您之前做的时候有遇到这个问题?如有,也是按照你提供的网址解决的?
现在做的时候直接通过ldif文件创建,创建用户的时候总是提示
ldap_add: Invalid syntax (21)
additional info: objectClass: value #0 invalid per syntax
好像就是缺少了objectClass
你好,这个错误好像是ldif文件格式中有空格位置不对
看一下哪行的末尾多了空格
2、
vim /etc/pam_ldap.conf
修改:
host 192.168.1.100
base dc=ldap,dc=live-in,dc=org
//还有可以问下这步的作用是什么?
你好,这步是设置ldap服务器的ip和域,时间太长了有点记不清楚了
你好,这个问题 搞了两天还没解决 方便的话 可否加个QQ 想向你请教下
我的Q:441200288
LZ,
可以再帮忙看下这个问题?
Automatically removed objectClass from template
Samba: Group Mapping: posixGroup removed from template as it is not defined in the
官网上面说的不知如何配置
它现在是没有posixGroup这个组,那么就要在schema里定义它,你找找有没有定义的地方
我看了下 /etc/openldap/schema/nis.schema文件里面已经定义了 貌似没加载
shema在最新版本中这个不是动态加载的?
问题解决了 谢谢哈
遇到了同样的问题,请教一下是如何解决的?
你好,你有过用SSH登录吗?SSH好像登录不了 在终端里可以登录
终端也是用SSH登录的呀?
恩,不过是root用户 ldap服务端上面新建用户登录不了 还在找原因
目前发现是密码不对 服务端我用的md5加密
客户端
Authentication选择:
Shadow 和Md5都选了
解决了两个问题
一个是md5加密
还有一个是ldap要整合ssh
我yum install db4 db4-utils 不行啊
没有这个软件包吗,系统版本是多少?
这个要先安装epel包才行
yum install epel-release
楼主,方便的话,能加你的qq吗?
我的QQ:917814296