openldap完整版本搭建记录
系统环境信息:
操作系统:CentOS release 6.2 (Final)
基础环境准备:
关闭防火墙:/etc/init.d/iptables stop && chkconfig iptables off
关闭NetworkManager:/etc/init.d/NetworkManager stop && chkconfig NetworkManager off
SeLinux设为disabled: setenforce 0
yum源仓库的配置:本次部署使用了阿里云yum源
1) wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
2)yum clean all 清除缓存
一、OpenLDAP服务器的搭建
1. 安装OpenLDAP的相关
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools,其中compat-openldap这个包与主从有很大的关系
[root@rpm ~]# tail -n /etc/passwd
ldap:x:::LDAP User:/var/lib/ldap:/sbin/nologin
可以通过rpm -qa |grep openldap查看安装了哪些包:
[root@rpm ~]# rpm -qa | grep openldap
openldap-2.4.-.el6.x86_64
openldap-devel-2.4.-.el6.x86_64
openldap-clients-2.4.-.el6.x86_64
openldap-servers-2.4.-.el6.x86_64
openldap-servers-sql-2.4.-.el6.x86_64
compat-openldap-2.3.-.el6.x86_64
2. 查看OpenLDAP版本,使用:slapd -VV
[root@rpm ~]# slapd -VV
@(#) $OpenLDAP: slapd 2.4. (Mar ::) $
mockbuild@c1bm.rdu2.centos.org:/builddir/build/BUILD/openldap-2.4./openldap-2.4./build-servers/servers/slapd
3. OpenLDAP的相关配置文件信息
/etc/openldap/slapd.conf # OpenLDAP的主配置文件,记录根域信息,管理员名称,密码,日志,权限等
/etc/openldap/slapd.d/* # 这下面是slapd.conf配置信息生成的文件,每修改一次配置信息,这里的东西就要重新生成
/etc/openldap/schema/* # OpenLDAP的schema存放的地方
/var/lib/ldap/* # OpenLDAP的数据文件
/usr/share/openldap-servers/slapd.conf.obsolete # 模板配置文件
/usr/share/openldap-servers/DB_CONFIG.example # 模板数据库配置文件
OpenLDAP监听的端口:
默认监听端口:389(明文数据传输)
加密监听端口:636(密文数据传输)
注意:从OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,建议不再使用slapd.conf作为配置文件。但是本片博文依旧使用slapd.conf作为配置文件,我们一步一步进行配置和介绍。
4. 初始化OpenLDAP的配置
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG # copy数据库文件
cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf # 此处copy是为了使用slapd.conf
5. 修改配置文件
首先,设置OpenLDAP管理员密码,拷贝这个到/etc/openldap/slapd.conf里
[root@rpm ~]# slappasswd -s
New password:
Re-enter new password:
{SSHA}JTudNsYrtbsksTdjxe4bFSwbrt1cF+LD
拷贝秘闻密码到/etc/openldap/slapd.conf里,这里的rootpw必须顶格写,而且与后面的密码文件用Tab键隔开,并修改对应序列。
6. 重新生成配置文件信息文件
先检测/etc/openldap/slapd.conf是否有错误
[root@rpm openldap]# slaptest -f /etc/openldap/slapd.conf
5b038945 bdb_db_open: DB_CONFIG for suffix "dc=wangjie,dc=com" has changed.
5b038945 Performing database recovery to activate new settings.
5b038945 bdb_db_open: database "dc=wangjie,dc=com": recovery skipped in read-only mode. Run manual recovery if errors are encountered.
config file testing succeeded
授权数据文件,更改文件的所属
[root@rpm openldap]# chown -R ldap:ldap /var/lib/ldap/
[root@rpm openldap]# ll /var/lib/ldap/
总用量
-rw-r--r-- ldap ldap 5月 : alock
-rw------- ldap ldap 5月 : __db.
-rw------- ldap ldap 5月 : __db.
-rw------- ldap ldap 5月 : __db.
-rw------- ldap ldap 5月 : __db.
-rw------- ldap ldap 5月 : __db.
-rw------- ldap ldap 5月 : __db.
-rw-r--r-- root root 5月 : DB_CONFIG
-rw------- ldap ldap 5月 : dn2id.bdb
-rw------- ldap ldap 5月 : id2entry.bdb
-rw------- ldap ldap 5月 : log.
我们先重启slapd生成配置文件。
[root@rpm openldap]# /etc/init.d/slapd restart
停止 slapd: [确定]
正在检查 slapd 的配置文件: [警告]
5b0389a6 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
5b0389a6 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif"
config file testing succeeded
正在启动 slapd: [确定]
接着回到检测/etc/openldap/slapd.conf是否有错误
[root@rpm openldap]# slaptest -f /etc/openldap/slapd.conf
config file testing succeeded
rm - rf /etc/openldap/slapd.d/* # 先删除最先的配置文件生成的信息
slaptest -f/etc/openldap/slapd.conf -F /etc/openldap/slapd.d/ # 重新生成文件
查看是否生成的是自己修改的配置文件信息,修改文件在/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif
重启:/etc/init.d/slapd restart
[root@rpm openldap]# /etc/init.d/slapd restart
停止 slapd: [确定]
正在启动 slapd: [确定]
到这里为止,OpenLDAP服务端基本上完成了,我们可以通过PhpLDAPAdmin来登录看一下,那先得安装PhpLDAPAdmin
二、PhpLDAPAdmin的搭建
1. 安装EPEL仓库,镜像里没有PhpLDAPAdmin这个的安装包,所以得安装EPEL仓库,本次使用阿里云的扩展源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum clean all
yum makecache
2. 安装PhpLDAPAdmin
yum install -y phpldapadmin
3. 修改phpldapadmin的配置文件,访问控制权限vim /etc/httpd/conf.d/phpldapadmin.conf,允许谁访问,因为本次实验环境,先全部允许。
4. 修改配置文件: /etc/phpldapadmin/config.php
$servers->setValue('login','attr','dn'); # 这一行的注释去掉
$servers->setValue('login','attr','uid'); # 这一行注释掉
5. 编辑root.ldif,导入管理员帐号信息。
此文件对格式的要求比较大,之前一直报“additional info: dn: attribute type undefined”最后在第一行加了一个空行解决,一直没有找到原因,如有妥善解决方法的,请留言赐教。
[root@rpm ~]# cat > root.ldif << EOF
>
>dn: dc=oldwang,dc=com
>objectclass: dcObject
>objectclass: organization
>o: oldwang.com
>dc: oldwang
>
>dn: cn=root,dc=oldwang,dc=com
>objectclass: organizationalRole
>cn: root
>EOF
通过浏览器访问:

也可以通过命令行查询:ldapsearch -x -b "cn=root,dc=oldwang,dc=com"
三、openLDAP的打开日志信息
1. 现在配置文件里加上日志行 ,这里的日志级别有很多种,-2记录为info信息。
vim /etc/openldap/slapd.conf 加上loglevel -2
这里修改了配置文件,所有得重新生成配置文件的信息
rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
chown -R ldap.ldap /etc/openldap/slapd.d/
2. 在/etc/rsyslog.conf文件中加入
local4.* /var/log/slapd/slapd.log

3. 创建日志文件目录并修改属组
mkdir /var/log/slapd
chmod /var/log/slapd/
chown ldap.ldap /var/log/slapd/

5. 查看日志信息,tailf /var/log/slapd/slapd.log
四、OpenLDAP与migrationtools实现导入系统账号的相关信息
本节需要migrationtools工具包,此工具包在之前的安装中已经统一安装过,如果之前没有安装请按照以下方法安装
yum -y install migrationtools
1. 修改migrationtools的配置文件,vim /usr/share/migrationtools/migrate_common.ph 修改以下的两个地方

2. 生成基础的数据文件,可以自己修改这个生成的base.ldif文件,把不需要的去掉
/usr/share/migrationtools/migrate_base.pl > base.ldif
3. 把base.ldif导入OpenLDAP的数据文件
ldapadd -x -D "cn=root,dc=oldwang,dc=com" -W -f /root/base.ldif

这里会报错,我们可以通过-c参数强制加入

导入之后,通过PhpLdapAdmin可以看到已经导入进来了

4. 添加用户及用户组
创建两个测试用户及用户组,并修改密码。
[root@rpm ~]# groupadd ldaptest1
[root@rpm ~]# groupadd ldaptest2
[root@rpm ~]# useradd -g ldaptest1 ldaptest1
[root@rpm ~]# useradd -g ldaptest2 ldaptest2
[root@rpm ~]# echo | passwd --stdin ldaptest1
更改用户 ldaptest1 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@rpm ~]# echo password | passwd --stdin ldaptest2
更改用户 ldaptest2 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
因为此次我们只想将刚创建的两个用户导入至openldap数据文件,所以将两个用户的相关信息截取出来
[root@rpm ~]# grep ldaptest /etc/passwd > users
[root@rpm ~]# grep ldaptest /etc/group > groups
[root@rpm ~]# cat users
ldaptest1:x::::/home/ldaptest1:/bin/bash
ldaptest2:x::::/home/ldaptest2:/bin/bash
[root@rpm ~]# cat groups
ldaptest1:x::
ldaptest2:x::
5. 使用migrationtools将两个临时用户生成ldif文件
[root@rpm ~]# /usr/share/migrationtools/migrate_passwd.pl users > users.ldif
[root@rpm ~]# /usr/share/migrationtools/migrate_group.pl groups > groups.ldif
查看生成的users.ldif --> cat users.ldif
cn: ldaptest1
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$$V9.vDuo7$14R62mGHBJt90XhXX3920lJhf1G7LP35ZWsNgptq6dWvmd1x7PFwQ6D35C7qlNodvmLUt/xjLpiHI39IqpBjP/
shadowLastChange:
shadowMin:
shadowMax:
shadowWarning:
loginShell: /bin/bash
uidNumber:
gidNumber:
homeDirectory: /home/ldaptest1 dn: uid=ldaptest2,ou=People,dc=oldwang,dc=com
uid: ldaptest2
cn: ldaptest2
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$$xVYndeJr$zhfe0FwT.3gu.t8rL8ohIHhyrgP90dvBHHsg0ZMQxVyEJ8.jxz7glem/xsllBtayNxms8csiw.JG0GCEZgpEa1
shadowLastChange:
shadowMin:
shadowMax:
shadowWarning:
loginShell: /bin/bash
uidNumber:
gidNumber:
homeDirectory: /home/ldaptest2
查看生成的group.ldif --> cat group.ldif
dn: cn=ldaptest1,ou=Group,dc=oldwang,dc=com
objectClass: posixGroup
objectClass: top
cn: ldaptest1
userPassword: {crypt}x
gidNumber: dn: cn=ldaptest2,ou=Group,dc=oldwang,dc=com
objectClass: posixGroup
objectClass: top
cn: ldaptest2
userPassword: {crypt}x
gidNumber:
6. 把用户导入至openLDAP的数据文件

7. 然后在phpLDAPadmin中查看

在这里就已经完成把系统的账号属性导入了OpenLDAP,然后就通过添加OpenLDAP用户,来进行验证,所以得先做好客户端的设置
五、OpenLDAP客户端配置
1. 停掉sssd服务 service sssd stop && chkconfig sssd off
2. 安装nslcd服务 yum install nss-pam-ldapd
3. 修改 /etc/nslcd.conf 配置文件,下边四行在原文件中是分散开备注是的,此处合并在一起。

4. 修改 /etc/pam_ldap.conf 配置文件

5. 修改 /etc/pam.d/system-auth 文件,文件中添加下图标记的行

6. 修改 /etc/nsswitch.conf 配置文件,在此三行后边增加ldap,修改后,默认登录的用户通过本地配置文件进行查找并匹配。当匹配不到用户信息时,会通过后端配置的LDAP认证服务进行匹配

7. 修改 /etc/sysconfig/authconfig 文件,确保标记的已打开为yes

8. 重启服务
/etc/init.d/nslcd restart
9. 验证,通过phpldapadmin增加一个用户,在ldaptest1的基础上,复制一个ldaptest3的条目。
首先复制组的条目,也可以直接复制用户的条目,将组挂到已有的组中。


根据自己的需求更改。

提交,之后自行查看,会发现多了一个新的组信息

通过ldaptest1用户赋值一个新的用户条目。

此时复制一个ldaptest3




可以看到已经成功的添加了ldaptest3的用户,这是OpenLDAP添加的,在本地是没有的,用cat /etc/passwd 看是没有ldaptest3用户的

在/etc/pam.d/system-auth配置文件里添加这一行:session optional pam_mkhomedir.so skel=/etc/skel/ umask=0022
重启 /etc/init.d/nslcd restart
此时我们进行测试
10. 查看系统用户列表
客户端查询:ldapsearch -H ldap://172.27.1.111 -x -b "ou=People,dc=oldwang,dc=com" |grep dn
服务端查询:ldapsearch -x -b "ou=People,dc=oldwang,dc=com" |grep dn
查询单个用户:ldapsearch -x -b "uid=ldaptest3,ou=People,dc=oldwang,dc=com" | grep dn
[root@rpm ~]# ldapsearch -H ldap://172.27.1.111 -x -b "ou=People,dc=oldwang,dc=com" | grep dn
dn: ou=People,dc=oldwang,dc=com
dn: uid=ldaptest1,ou=People,dc=oldwang,dc=com
dn: uid=ldaptest2,ou=People,dc=oldwang,dc=com
dn: uid=ldaptest3,ou=People,dc=oldwang,dc=com
[root@rpm ~]# ldapsearch -x -b "ou=People,dc=oldwang,dc=com" | grep dn
dn: ou=People,dc=oldwang,dc=com
dn: uid=ldaptest1,ou=People,dc=oldwang,dc=com
dn: uid=ldaptest2,ou=People,dc=oldwang,dc=com
dn: uid=ldaptest3,ou=People,dc=oldwang,dc=com
[root@rpm ~]# ldapsearch -x -b "uid=ldaptest3,ou=People,dc=oldwang,dc=com" | grep dn
dn: uid=ldaptest3,ou=People,dc=oldwang,dc=com
六、OpenLDAP与ssh
1. 修改 /etc/ssh/sshd_config 文件

2. 修改 /etc/pam.d/sshd 文件,用于第一次登陆的账户自动创建家目录
添加:session required pam_mkhomedir.so
3. 修改 /etc/pam.d/password-auth 文件

4. 重启ssh:/etc/init.d/sshd restart
七、OpenLDAP限制用户登录系统
在账号中,不能让每个用户都能登录系统,所以要限制用户登录
1. 修改 /etc/pam.d/sshd 文件,在这里加上pam_access.so模块
添加:account required pam_access.so
2. 修改 /etc/security/access.conf 文件,这里限制ldaptest3用户ssh登录系统

测试:可以看到只有opentest3登录不上

openldap完整版本搭建记录的更多相关文章
- faster-rcnn(testing): ubuntu14.04+caffe+cuda7.5+cudnn5.1.3+opencv3.0+matlabR2014a环境搭建记录
python版本的faster-rcnn见我的另一篇博客: py-faster-rcnn(running the demo): ubuntu14.04+caffe+cuda7.5+cudnn5.1.3 ...
- py-faster-rcnn(running the demo): ubuntu14.04+caffe+cuda7.5+cudnn5.1.3+python2.7环境搭建记录
第一次写博客,以此纪念这几天安装caffe,跑faster-rcnn的血泪史.在此特别感谢网络各路大神,来自全球各地,让我能从中汲取营养,吸取经验,总结规律. faster-rcnn分为matlab版 ...
- Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建
1.JDK的安装 首先下载JDK,这个从sun公司官网可以下载,根据自己的系统选择64位还是32位,安装过程就是next一路到底.安装完成之后当然要配置环境变量了. ————————————————— ...
- Eclipse4.6(Neon) + Tomcat8 + MAVEN3.3.9 + SVN项目完整环境搭建
软件清单 jdk-8u102-windows-x64.exe eclipse-inst-win64.exe (Eclipse4.6 Neon) apache-tomcat-8.5.5-windows- ...
- 生产apollo搭建记录(五)
1. 生产apollo搭建记录(五) 1.1. 目标 搭建两个环境配置,dev和pro,但目前可用服务器限制,打算mysql用同一个,服务器分生产和测试 1.2. 数据库 建三个库 注意注意:在启 ...
- 12.2RAC搭建记录
12.2RAC环境搭建记录 安装前资源检查 资源限制要求/etc/security/limits.conf Table 6-1 Installation Owner Resource Limit Re ...
- RobotFramework测试环境搭建记录
Robotframwork测试环境搭建记录 1.安装Python2.7(https://www.python.org/) 在环境变量path中加入“C:\Python27” 安装后的验证方法为在命令行 ...
- SSM 框架-03-MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
SSM 框架-03-MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建 如果你是使用 Eclipse 你需要先安装 MyEclipse,请参考:SSM 框架-02-MyEclipse ...
- (转载)PHP环境搭建-记录
PHP环境搭建-记录 转于 http://jingyan.baidu.com/article/fcb5aff797ec41edaa4a71c4.html php5.5 做了大量的更新,在与apac ...
随机推荐
- React.js 小书 Lesson3 - 前端组件化(二):优化 DOM 操作
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson3 转载请注明出处,保留原文链接和作者信息. 看看上一节我们的代码,仔细留意一下 change ...
- Java Executors小结
一 Executors提供了一系列工厂方法用于创先线程池ThreadPoolExecutor线程池的具体实现类,一般用的各种线程池都是基于这个类实现的 返回的线程池都实现了ExecutorServic ...
- 解决navicate 连接mysql数据库中文乱码的问题
以下均是ubuntu12.04为准 1.修改mysql的配置文件. 1.1.vi /etc/mysql/my.conf找到[client]在其下面添加 default-character-set=u ...
- OAuth2.0和企业内部统一登录,token验证方式,OAuth2.0的 Authorization code grant 和 Implicit grant区别
统一登录是个很多应用系统都要考虑的问题,多个项目的话最好前期进行统一设计,否则后面改造兼容很麻烦: cas认证的方式:新公司都是老项目,用的是cas认证的方式,比较重而且依赖较多,winform的项目 ...
- Slickflow.NET 开源工作流引擎基础介绍-.NET Core2.0 版本实现介绍 (转)
前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framew ...
- ora-12541:tns: 无监听程序解决办法
1.首先找到 Oracle 安装文件 中 listener.ora文件与tnsnames.ora文件: 列如:路径:E:\app\当前系统的账户名\product\11.2.0\dbhome_1\NE ...
- Spring课程 Spring入门篇 1-3Spring框架
课程链接: 1 框架与类库的区别: 框架封装了逻辑,高内聚,类库是松散的工具组合 框架专注于某一个领域,类库通用性较强 2 为什么使用框架: a 业务系统日趋复杂 b 重用度高,开发效率和质量提高 c ...
- IDEA学习中的参考资料
下载安装破解:https://www.cnblogs.com/wang1024/p/7485758.html FIntelliJ-IDEA13基础教程: http://static.runoob.co ...
- 在Centos7中安装Docker并实例化Mysql
首先 本文是一篇安装流程,从初始的Centos7安装Docker后实例化一个Mysql的整个流程,其中会包含一些需要注意的疑点和坑. 实例化的Mysql是将数据和配置保存在宿主机. 注意,在安装Doc ...
- ArcSDE空间数据库中SDE用户使用探讨(转)
ArcSDE作为空间数据库解决方案,应用非常广泛,本短文将尝试描述SDE的工作机制,简要说明空间数据 库中SDE用户的使用方法. ArcSDE如何工作 ArcSDE属于中间件技术,其本身并不能够存储空 ...