在这里,我们将给大家分享关于centos安装openldap过程的知识,让您更了解centos安装openmpi的本质,同时也会涉及到如何更有效地CentOS6.4下编译安装OpenLDAP、Cent
在这里,我们将给大家分享关于centos安装openldap过程的知识,让您更了解centos安装openmpi的本质,同时也会涉及到如何更有效地CentOS 6.4下编译安装OpenLDAP、Centos 6.5 搭建openldap、Centos 6.8 环境下 OpenLDAP 安装与部署、CentOS 6.9下OpenLDAP 的安装与配置的内容。
本文目录一览:- centos安装openldap过程(centos安装openmpi)
- CentOS 6.4下编译安装OpenLDAP
- Centos 6.5 搭建openldap
- Centos 6.8 环境下 OpenLDAP 安装与部署
- CentOS 6.9下OpenLDAP 的安装与配置
centos安装openldap过程(centos安装openmpi)
1.下载软件如下,db是数据库
2.首先安装数据库db
# tar xf db-4.8.30.tar.gz
# cd db-4.8.30
# cd build_unix/
(# ../dist/configure -prefix=/opt/BerkeleyDB
但是会报错,这个错说明你系统里面没有gcc,需要安装
# yum -y install gcc)
# ../dist/configure -prefix=/opt/BerkeleyDB
# make
# make install
这样即成功。
3.防止后面的安装会出错
# cp /opt/BerkeleyDB/include/* /usr/include/
# cp /opt/BerkeleyDB/lib/* /usr/lib/
4.解压安装openldap
# tar xf openldap-2.4.45.tgz
# cd openldap-2.4.45
# ./configure --prefix=/opt/openldap
但是会报错,需要设置环境变量
# export LD_LIBRARY_PATH="/opt/db-4.8.30/build_unix/.libs"
# ./configure --prefix=/opt/openldap
这样就表示这步已经ok了,照提示进行下一步
# make depend
# make
# make install
安装成功。
5.修改配置
# vi /opt/openldap/etc/openldap/slapd.conf
include /data/openldap/etc/openldap/schema/core.schema
include /data/openldap/etc/openldap/schema/cosine.schema
include /data/openldap/etc/openldap/schema/inetorgperson.schema
database mdb
suffix "dc=migu,dc=com" #根节点
rootdn "cn=spms,dc=migu,dc=com" #用户名
rootpw sd5w6a1 #密码可以自行设置
6.启动ldap
# cd /opt/openldap/libexec/
# ./slapd
另外,若出现以上未提到的错误或者ldap启动不了,请执行以下操作:
# export LDFLAGS="-L/opt/BerkeleyDB/lib"
# export CPPFLAGS="-I/Opt/BerkeleyDB/include -D_GNU_SOURCE"
CentOS 6.4下编译安装OpenLDAP
环境:
CentOS 6.4 X64
db-4.6.21.tar.gz
openldap-2.4.36.tgz
PHPldapadmin-1.2.3.zip
软件包下载
一、安装BerkeleyDB
# tar zxvf db-4.6.21.tar.gz
# cd db-4.6.21/build_unix
# ../dist/configure
# make
# make install
# vi /etc/ld.so.conf 加入下句
/usr/local/BerkeleyDB.4.6/lib
# ldconfig
二、安装openLDAP
# tar zxvf openldap-2.4.36.tgz
# openldap-2.4.36
# env CPPFLAGS="-I/usr/local/BerkeleyDB.4.6/include" LDFLAGS="-L/usr/local/BerkeleyDB.4.6/lib -D_GNU_SOURCE" ./configure --prefix=/usr/local/openldap --enable-ldbm
注:需要设置资料库的include 和lib 路径,不然在配置到资料库相关内容时会提示DB版本不兼容,并中断,若没有--enable-ldbm选项,在
测试目录时会提示ldbm找不到
# make depend
# make
# make test
# make install
三、配置LDAP
# vi /usr/local/openldap/etc/openldap/slapd.conf
修改 suffix rootdn 等处,即定义自己的域名
//建立初始化数据
# vi base.ldif 录入
dn: dc=vqiu,dc=cn
objectclass: dcObject
objectclass: organization
o:ant,precision.
dc: vqiu
dn: cn=admin,dc=vqiu,dc=cn
objectclass: organizationalRole
cn: admin
//导入初始数据
# /usr/local/openldap/bin/ldapadd -x -W -D "cn=admin,dc=cn -f base.ldif
//启动服务
# /usr/local/openldap/libexec/slapd -d 256 -4
四、搭建http 平台
# yum -y install httpd httpd-devel PHP-MysqL PHP PHP-ldap
配置 PHPldapadmin
# tar -zxvf PHPldapadmin-1.2.3.tgz
# mv PHPldapadmin-1.2.3 /var/www/html/
# cd /var/www/html
# mv PHPldapadmin-1.2.3 PHPldapadmin
# cd PHPldapadmin/config
# cp config.PHP.example config.PHP
# vi config.PHP
$servers->newServer('ldap_pla');
$servers->setValue('server','name','HDT Linux LDAP');
$servers->setValue('server','host','127.0.0.1');
$servers->setValue('server','port',389);
$servers->setValue('server','base',array('dc=abc,dc=com'));
$servers->setValue('login','auth_type','cookie');
$servers->setValue('login','bind_id','cn=root,dc=abc,dc=com');
$servers->setValue('login','bind_pass','123456');
$servers->setValue('server','tls',false);
检验查询:
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
windows 平台可以通过LDAP admin 这个工具来远程,十分方便。
Centos 6.5 搭建openldap
1、安装openldap(版本openldap-2.4.40-16.el6.x86_64)
$yuminstall-yopenldapopenldap-serversopenldap-clientsopenldap-devel #启动openldap $/etc/init.d/openldapstart
2、配置前准备
#openldap配置文件 $ls/etc/openldap/ certscheck_password.confldap.confschemaslapd.d #复制服务端配置文件 $cp/usr/share/openldap-servers/slapd.conf.obsolete/etc/openldap/slapd.conf #备份配置文件 $cp-a/etc/openldap/slapd.d{,.bak}&&rm-rf/etc/openldap/slapd.d/* #重新生成/etc/openldap/slapd.d/下的文件 $slaptest-u $slaptest-f/etc/openldap/slapd.conf-F/etc/openldap/slapd.d $chown-Rldap.ldap/etc/openldap/slapd.d
3、配置openldap
#openldap的配置文件为slapd.conf #先生成ldap的admin的密码 $slappasswd-s123456 {SSHA}4l73bzaYLHmgnfof5uEmA6G9LaCy+h8S #修改slapd.conf $egrep-v"#|^$"/etc/openldap/slapd.conf include /etc/openldap/schema/corba.schema include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/duaconf.schema include /etc/openldap/schema/dyngroup.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/java.schema include /etc/openldap/schema/misc.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/openldap.schema include /etc/openldap/schema/ppolicy.schema include /etc/openldap/schema/collective.schema allowbind_v2 pidfile /var/run/openldap/slapd.pid argsfile /var/run/openldap/slapd.args TLSCACertificatePath/etc/openldap/certs TLSCertificateFile"\"OpenLDAPServer\"" TLSCertificateKeyFile/etc/openldap/certs/password #数据库配置,供测试使用 databaseconfig accessto* byselfwrite byanonymousauth by*read database bdb #设置域和组织名称 suffix "dc=example,dc=com" checkpoint 102415 #设置管理员账号和密码 rootdn "cn=admin,dc=example,dc=com" rootpw {SSHA}4l73bzaYLHmgnfof5uEmA6G9LaCy+h8S directory /var/lib/ldap indexobjectClasseq,pres indexou,cn,mail,surname,givennameeq,pres,sub indexuidNumber,gidNumber,loginShelleq,pres indexuid,memberUideq,sub indexnisMapName,nisMapEntryeq,sub
4、启动openldap
$/etc/init.d/openldaprestart #查看端口已启动 $ss-tnl|grep389 LISTEN0128:::389:::* LISTEN0128*:389*:*
5、添加用户和组
#安装migrationtools软件包(将本地用户写入openldap可读的ldif文件) $yuminstallmigrationtools-y #软件路径 $ls/usr/share/migrationtools migrate_aliases.plmigrate_all_nisplus_offline.shmigrate_base.plmigrate_netgroup_byhost.plmigrate_profile.pl migrate_all_netinfo_offline.shmigrate_all_nisplus_online.shmigrate_common.phmigrate_netgroup_byuser.plmigrate_protocols.pl migrate_all_netinfo_online.shmigrate_all_offline.shmigrate_fstab.plmigrate_netgroup.plmigrate_rpc.pl migrate_all_nis_offline.shmigrate_all_online.shmigrate_group.plmigrate_networks.plmigrate_services.pl migrate_all_nis_online.shmigrate_automount.plmigrate_hosts.plmigrate_passwd.plmigrate_slapd_conf.pl #修改域名 $vim/usr/share/migrationtools/migrate_common.pl 71$DEFAULT_MAIL_DOMAIN="example.com"; 74$DEFAULT_BASE="dc=example,dc=com"; #生成base.ldif文件并导入到ldap中 $/usr/share/migrationtools/migrate_base.pl>base.ldif $catbase.ldif 1dn:dc=example,dc=com 2dc:example 3objectClass:top 4objectClass:domain 5 6dn:ou=People,dc=com 7ou:People 8objectClass:top 9objectClass:organizationalUnit 10 11dn:ou=Group,dc=com 12ou:Group 13objectClass:top 14objectClass:organizationalUnit #把修改好的base.ldif导入到ldap中,通过使用ldapadd命令来完成 $ldapadd-x-D"cn=admin,dc=com"-W-fbase.ldif EnterLDAPPassword: addingnewentry"dc=example,dc=com" addingnewentry"ou=People,dc=com" addingnewentry"ou=Group,dc=com" #新建用户test并设置密码 $useraddtest $passwdtest #生成people.ldif和group.ldif $greptest/etc/passwd>test_people $greptest/etc/group>test_group $/usr/share/migrationtools/migrate_passwd.pltest_people>people.ldif $/usr/share/migrationtools/migrate_group.pltest_group>group.ldif #查看生成的文件 $catpeople.ldif dn:uid=test,ou=People,dc=com uid:test cn:test objectClass:account objectClass:posixAccount objectClass:top objectClass:shadowAccount userPassword:{crypt}!! shadowLastChange:17281 shadowMin:0 shadowMax:99999 shadowWarning:7 loginShell:/bin/bash uidNumber:500 gidNumber:500 homeDirectory:/home/test $catgroup.ldif dn:cn=test,ou=Group,dc=com objectClass:posixGroup objectClass:top cn:test userPassword:{crypt}x gidNumber:500 #导入ldif文件到ldap中 $ldapadd-x-D"cn=admin,dc=com"-W-fpeople.ldif EnterLDAPPassword: addingnewentry"uid=test,dc=com" $ldapadd-x-D"cn=admin,dc=com"-W-fgroup.ldif EnterLDAPPassword: addingnewentry"cn=test,dc=com" #查看 $ldapsearch-x-D"cn=admin,dc=com"-W-b"dc=example,dc=com" EnterLDAPPassword: #extendedLDIF # #LDAPv3 #base<dc=example,dc=com>withscopesubtree #filter:(objectclass=*) #requesting:ALL # #example.com dn:dc=example,dc=com dc:example objectClass:top objectClass:domain #People,example.com dn:ou=People,dc=com ou:People objectClass:top objectClass:organizationalUnit #Group,example.com dn:ou=Group,dc=com ou:Group objectClass:top objectClass:organizationalUnit #test,People,example.com dn:uid=test,dc=com uid:test cn:test objectClass:account objectClass:posixAccount objectClass:top objectClass:shadowAccount userPassword::e2NyeXB0fSEh shadowLastChange:17281 shadowMin:0 shadowMax:99999 shadowWarning:7 loginShell:/bin/bash uidNumber:500 gidNumber:500 homeDirectory:/home/test #test,Group,example.com dn:cn=test,dc=com objectClass:posixGroup objectClass:top cn:test userPassword::e2NyeXB0fXg= gidNumber:500 #searchresult search:2 result:0Success #numResponses:6 #numEntries:5
现已将创建的test用户导入到ldap中
openldap客户端搭建:http://www.jb51.cc/article/p-vguvosoy-bqd.html
其中遇到一个小问题,在“8、使用authconfig命令启动nslcd”后仍然不能通过su命令进行切换,显示没有家目录,这时候,再重新执行“5、配置/etc/pam.d/system-auth”就可以解决。
Centos 6.8 环境下 OpenLDAP 安装与部署
一、OpenLDAP 介绍
LDAP 全称轻量级目录访问协议(英文:Lightweight Directory Access Protocol),是一个运行在 TCP/IP 上的目录访问协议。LDAP 实现提供被称为目录服务的信息服务,可以看做是一张特殊的数据库系统。可以有效的解决众多网络服务的用户账户问题,规定了统一的身份信息数据库、身份认证机制和接口,实现了资源和信息的统一管理,保证了数据的一致性和完整性。
二、OpenLDAP Server 端部署
1. 安装 OpenLDAP 服务
yum -y install openldap openldap-*
OpenLDAP 配置文件信息:
- /etc/openldap/slapd.conf:OpenLDAP 的主配置文件,记录根域信息,管理员名称,密码,日志,权限等
- /etc/openldap/slapd.d/*:这下面是 /etc/openldap/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 模板数据库配置文件
2. 配置 OpenLDAP,包括准备 DB_CONFIG 和 slapd.conf
cd /etc/openldap/
cp /usr/share/openldap-servers/slapd.conf.obsolete slapd.conf
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
3. 配置 OpenLDAP 管理员密码
$ slappasswd -s 123456
{SSHA}Ct24HfPbIOy7tqf++84CL1hfEFC6VYlk (密码需保存,后面会用上)
4. 修改 slapd.conf,主要配置 dc 和 rootpw,rootpw 配置为上述步骤中的密码
database bdb
suffix "dc=kwang,dc=cn"
checkpoint 1024 15
rootdn "cn=Manager,dc=kwang,dc=cn"
rootpw {SSHA}Ct24HfPbIOy7tqf++84CL1hfEFC6VYlk
5. 修改目录权限
chown -R ldap:ldap /etc/openldap/
chown -R ldap:ldap /var/lib/ldap/
6. 启动 slapd 服务
$ /etc/init.d/slapd start
Starting slapd: [ OK ]
$ /etc/init.d/slapd status
slapd (pid 20539) is running...
$ chkconfig slapd on # 设置开机启动
$ lsof -i:389 #检测端口是否在监听
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
slapd 20539 ldap 7u IPv4 11741440 0t0 TCP *:ldap (LISTEN)
7. 测试 /etc/openldap/slapd.conf 配置是否正确
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
出现如下结果则表示配置文件已正确配置:
config file testing succeeded
三、OpenLDAP Server 端安装 migrationtools,创建根域目录
1. 安装 migrationtools 工具
migrationtools 工具实现 OpenLDAP 用户及用户组的添加
yum install migrationtools -y
2. 编辑 /usr/share/migrationtools/migrate_common.ph 文件,生成基础组
将 DEFAULT_MAIL_DOMAIN 和 DEFAULT_BASE 值和 slapd.conf 文件对应。
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "kwang.com";
# Default base
$DEFAULT_BASE = "dc=kwang,dc=com";
3. 创建 OpenLDAP 根域条目 base.ldif 文件
对生成的 base.ldif 文件编辑,将不需要的条目删除。
dn: dc=kwang,dc=com
dc: kwang
objectClass: top
objectClass: domain
dn: ou=People,dc=kwang,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=kwang,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
4. 添加 base.ldif 到 ldap 中
ldapadd -x -D "cn=Manager,dc=kwang,dc=com" -w 123456 -f base.ldif
5. 查询 ldap 中已添加的条目
$ ldapsearch -x -b "dc=kwang,dc=com"
# extended LDIF
#
# LDAPv3
# base <dc=kwang,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# kwang.lan
dn: dc=kwang,dc=com
dc: kwang
objectClass: top
objectClass: domain
# People, kwang.lan
dn: ou=People,dc=kwang,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
# Group, kwang.lan
dn: ou=Group,dc=kwang,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
# search result
search: 2
result: 0 Success
# numResponses: 4
# numEntries: 3
至此,OpenLDAP server 端环境已部署。
四、OpenLDAP client 端部署
客户端部署有两种方式 nslcd 和 SSSD,两种方式基本一致,SSSD 相比更新,具有缓存功能,在 LDAP server 宕机时,依然能正常工作。因此本文主要介绍 SSSD 部署。
4.1 通过配置文件部署
1. 安装 SSSD
yum install openldap-clients nss-pam-ldapd -y
yum install authconfig sssd-ldap sssd -y
2. 编辑 /etc/openldap/ldap.conf 文件
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
BASE dc=kwang,dc=com
URI ldaps://<ldap-server-ip>:389/
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
TLS_CACERTDIR /etc/openldap/certs
3. 编辑 /etc/sssd/sssd.conf 文件
[sssd]
config_file_version = 2
services = nss, pam
domains = default
debug_level = 5
[nss]
filter_users = root,ldap,named,avahi,haldaemon,dbus,radiusd,news,nscd
[domain/default]
id_provider = ldap
auth_provider = ldap
ldap_search_base = dc=kwang,dc=com
ldap_tls_reqcert = never
ldap_uri = ldaps://<ldap-server-ip>
4. 编辑 /etc/nsswitch.conf 文件
passwd: files sss
shadow: files sss
group: files sss
#如果本地用户和ldap用户,但是希望以ldap用户为准,file为补充时,可以修改/etc/nsswitch.conf
passwd: sss files
shadow: sss files
group: sss files
5. 编辑 /etc/pam.d/system-auth 文件
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_fprintd.so
auth sufficient pam_unix.so nullok try_first_pass
#auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_sss.so use_first_pass
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so
session optional pam_mkhomedir.so
6. 编辑 /etc/pam.d/password-auth-ac 文件
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
#auth requisite pam_succeed_if.so uid >= 500 quiet 必须注释掉
auth sufficient pam_sss.so use_first_pass
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so
session optional pam_mkhomedir.so
7. 启动服务
chmod 600 /etc/sssd/sssd.conf
/etc/init.d/sssd restart
4.2 通过命令行部署
#安装程序
yum install openldap-clients nss-pam-ldapd -y
yum install authconfig sssd-ldap sssd -y
#配置系统授权使用sss和ldap
authconfig --enablemkhomedir \
--enableldaptls\
--enableldap\
--enableldapauth\
--ldapserver=ldaps://<ldap-server-ip>\
--ldapbasedn="dc=kwang,dc=com"\
--enableshadow\
--update
#调整参数
sed -i ''/uid >= 500/s/^/#/'' /etc/pam.d/system-auth-ac
sed -i ''/uid >= 500/s/^/#/'' /etc/pam.d/password-auth-ac
sed -i ''/\[domain\/default\]/a\ldap_tls_reqcert = never'' /etc/sssd/sssd.conf
/etc/init.d/sssd restart
4.3 ldap 常用操作
1. 验证连通性
getent passwd kwang
id kwang
2. 缓存刷新
#一般情况手动刷新缓存
sss_cache -E
#sssd会将缓存信息保存在本地,特殊情况下,缓存存在冲突的情况,可以删除本地缓存,重启服务
rm -rf /var/lib/sss/db/*
至此,OpenLDAP server 端和 client 端均已部署完成。
【参考资料】
[1]. CentOS6.7 安装配置 LDAP Server
[2]. CentOS 6.9 下 OpenLDAP 的安装与配置
CentOS 6.9下OpenLDAP 的安装与配置
LDAP 基础教程
LDAP 全称轻量级目录访问协议(英文:Lightweight Directory Access Protocol),是一个运行在 TCP/IP 上的目录访问协议。LDAP实现提供被称为目录服务的信息服务,可以看做是一张特殊的数据库系统。可以有效的解决众多网络服务的用户账户问题,规定了统一的身份信息数据库、身份认证机制和接口,实现了资源和信息的统一管理,保证了数据的一致性和完整性。
使用场景
有两个系统A,B;需要把A系统创建的用户同步到B中,而B是个apache 开源项目,此时需要借助LDAP来解决。首先在A中建用户的同时,同步更新到LDAP中,然后B系统从LDAP中同步到自己的系统中,这样就实现了A中的用户到B系统的同步。
LDAP理解
在LDAP中,信息以树状方式组织,基本数据单元是条目,而每个条目由属性构成,属性由类型(Type)和一个或多个值(Value)组成。
Entry
包含的信息描述了现实世界中的一个真实的对象,在目录系统中可以理解为一个节点。在目录中添加一个Entry时,该Entry必须属于一个或者多个对象类(Oject Class),Entry的类型由属性Object Class规定。每个Entry都有一个唯一的DN(distinguished name)来标识Entry在directory中的位置。用Java的方式Entry相当于一个Instances,而Ojbect class自然就是Class。
根节点DN的命名有多种方法,其中之一就是域名命名法,例如sohu.com根阶节点的DN应该是DN:dc=sohu,dc=com,People节点的DN:ou=People,dc=example,dc=com,RDN是目录树中节点的相对标识,例如People节点的RDN:ou=people。
Attribute
每个Entry都是由许多Attribute组成,每个属性描述的是对象的一个特征,每个属性由一个类型和一个或多个值Value组成。
每个属性类型有所对应的语法和匹配规则;对象类和属性类型的定义均可以使用继承的概念。每个条目创建时,必须定义所属的对象类,必须提供对象类中的必选属性类型的属性值,在LDAP中一个属性类型可以对应多个值。
常见属性:
属性名 | 是否必填 | 描述 |
---|---|---|
c | 否 | 国家 |
dc | 是 | domain component,常用来指一个域名的一部分 |
o | 否 | 该条目所属的组织名(Organization Name) |
ou | 否 | 一个组织单元的名字 |
cn | 是 | common name,一个对象的名字,如果指人,使用全名 |
sn | 是 | Surname,一个人的姓 |
uid | 是 | Userid,某个用户的登录名,与Linux系统中用户的uid不同 |
userPassword | 否 | 登陆密码 |
否 | 邮箱 | |
givenname | 否 | 一个人的名 |
displayName | 否 | 显示条目时要使用的首选名称 |
uidNumber | 否 | 账号的UID |
gidNumber | 否 | 账号的GID |
homeDirectory | 否 | 用户的家目录指定 |
loginShell | 否 | 用户登录的SHELL |
employeeNumber | 否 | 工号相关信息 |
homePhone | 否 | 家庭电话 |
mobile | 否 | 该条目的手机号码 |
description | 否 | 该条目的描述信息 |
Object class
在LDAP中,一个条目必须包含一个Oject class属性,且需要赋予至少一个值。每个值将用作一条LDAP条目进行数据存储的模板,模板中包含了一个条目必须被赋值的属性和可选的属性。
Object分为三类,结构型(Structural),如Person和orginzationUnit,辅助型(Auxiliary),如extensibeObject,抽象型(Abstract):如top,抽象型的ObjectClass不能直接使用。
下面部分常用的ObjectClass,定义在/etc/openldap/schema/core.schema文件中
名称 | 描述 | 必要属性 |
---|---|---|
domain | ||
organization | o | |
organizationalUnit | ou | |
person | sn,cn | |
organizationPerson | cn,sn | |
top | 抽象型,顶级ObjectClass | |
posixAccount | Linux用户 | cn,gidNumber,homeDirectory,uid,uidNumber |
posixGroup | Linux用户组 | cn,gidNumber |
- Entry必须仅包含一个Structural类型的OjectClass,其他两种类型可包括0或者多个。
LDAP 功能模型
描述LDAP 协议可以采用的相关操作,来访问存储在目录树中的数据,可以将操作分
成三组:
(1) 更新操作 包括添加,删除,重命名,修改Entry
(2) Interrogation Operation 用于数据的查询
(3) 认证和控制 (bind unbind abandon)
LDAP 安全模型
(1) 提供一个框架,包含目录中的信息不被非法访问,LDAP 的安全模型主要是通过身份认
证、安全通道和访问控制(ACL)来实现。
(2) LDAP 是一个面向连接的协议,在能够对LDAP 目录进行任何操作之前,LDAP 客户端
端必须获得一个到LDAP 服务端的一个连接,在这个过程中需要对LDAP 客户端的身份进
行验证(可以理解为用户绑定)。
(3) 在用户通过验证之后,为用户分配附加的权限,比如一些用户只能查看特定的Entry,而不能修改。一些用户可以查看并且修改所有的Entry等。
下面是一个典型的 LDAP 目录树结构,其中每个节点表示一个条目。在下一节中,我们将按照这个结构来配置一个简单的 LDAP 服务。
本文仅涉及没有SSL的OpenLDAP配置。
一、环境准备
两台虚拟机
IP | hostname | 说明 |
---|---|---|
192.168.1.101 | openldap-server | server端 |
192.168.1.102 | openldap-client | client端 |
关闭SELinux
查看SELinux状态:getenforce,或/usr/sbin/sestatus
临时关闭:
setenforce 0
永久关闭:
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config grep SELINUX=disabled /etc/selinux/config
关闭iptables
chkconfig iptables off /etc/init.d/iptables stop /etc/init.d/iptables status
官方文档:
http://www.openldap.org/doc/admin24/
步骤
分为server端操作和client端操作
二、server端安装OpenLDAP
1. yum安装OpenLDAP
[root@openldap-server ~]# yum install openldap openldap-servers openldap-servers-sql openldap-clients openldap-devel compat-openldap -y
OpenLDAP的相关配置文件信息
- /etc/openldap/slapd.conf:OpenLDAP的主配置文件,记录根域信息,管理员名称,密码,日志,权限等
- /etc/openldap/slapd.d/*:这下面是/etc/openldap/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(密文数据传输)
2. 复制ldap配置文件到/etc
[root@openldap-server ~]# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
3. 生成ldap管理员密码(把ldappassword改为自己的管理员密码)
[root@openldap-server ~]# slappasswd -s ldappassword {SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1
4. 修改slapd.conf
修改其中cn,dc相关内容,及rootpw密文密码,rootpw配置上面设置的密码
(rootpw必须顶格写,与密码Tab键分开)
[root@openldap-server ~]# cp /etc/openldap/slapd.conf /etc/openldap/slapd.conf.bak [root@openldap-server ~]# vim /etc/openldap/slapd.conf ...... database bdb suffix "dc=qq,dc=com" checkpoint 1024 15 rootdn "cn=Manager,dc=qq,dc=com" #管理LDAP中信息的最高权限,即管理员权限,登陆时用。 ...... rootpw {SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1
检测/etc/openldap/slapd.conf是否有错误
[root@openldap-server ~]# slaptest -f /etc/openldap/slapd.conf config file testing succeeded
5. 检测并重新生成ldap数据库
[root@openldap-server ~]# cp /usr/share/openldap-servers/DB_CONfig.example /var/lib/ldap/DB_CONfig # 拷贝DB_CONfig文件 [root@openldap-server ~]# cd /etc/openldap/ [root@openldap-server openldap]# ls -l slapd.d/ drwxr-x--- 3 ldap ldap 4096 7月 13 13:59 cn=config -rw-r----- 1 ldap ldap 1281 7月 13 13:50 cn=config.ldif [root@openldap-server openldap]# rm -rf slapd.d/* # 删除默认配置 (否则添加ldap用户时会报错) [root@openldap-server openldap]# 官方对于OpenLDAP2.4 ,不推荐使用 slapd.conf 作为配置文件。从这个版本开始所有配置数据都保存在 /etc/openldap/slapd.d/中 [root@openldap-server openldap]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/ 5b02d207 bdb_db_open: database "dc=qq,dc=com": db_open(/var/lib/ldap/id2entry.bdb) Failed: No such file or directory (2). 5b02d207 backend_startup_one (type=bdb,suffix="dc=qq,dc=com"): bi_db_open Failed! (2) slap_startup Failed (test would succeed using the -u switch) [root@openldap-server openldap]# slaptest -u config file testing succeeded 出现succeed继续
6. 修改相关ldap文件权限
[root@openldap-server openldap]# chown -R ldap:ldap /var/lib/ldap/ [root@openldap-server openldap]# chown -R ldap:ldap /etc/openldap/
7. 启动slapd服务
[root@openldap-server openldap]# service slapd start Starting slapd: [ OK ] [root@openldap-server openldap]# service slapd status slapd (pid 12896) is running... [root@openldap-server openldap]# chkconfig slapd on [root@openldap-server openldap]# lsof -i:389 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME slapd 12896 ldap 7u IPv4 702934 0t0 TCP *:ldap (LISTEN) slapd 12896 ldap 8u IPv6 702935 0t0 TCP *:ldap (LISTEN)
三、OpenLDAP日志功能开启
1. slapd.conf配置文件里加上日志行
这里的日志级别有很多种,这里选择256这个值的级别(主从节点都要打开openldap日志功能)
[root@openldap-master ~]# cp /etc/openldap/slapd.conf{,.bak3} [root@openldap-master ~]# vim /etc/openldap/slapd.conf #中间的空格用tab键分开 ....... # 最后添加 loglevel 256
2. 修改了配置文件,所有得重新生成配置文件的信息
[root@openldap-master ~]# rm -rf /etc/openldap/slapd.d/* [root@openldap-master ~]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/ config file testing succeeded [root@openldap-master ~]# slaptest -u config file testing succeeded [root@openldap-master ~]# chown -R ldap:ldap /var/lib/ldap/ [root@openldap-master ~]# chown -R ldap:ldap /etc/openldap/
3. 修改/etc/rsyslog.conf文件,加上下面内容
[root@openldap-master ~]# cp /etc/rsyslog.conf{,.bak} [root@openldap-master ~]# vim /etc/rsyslog.conf ........ # 最后添加 local4.* /var/log/slapd/slapd.log
4. 创建日志文件目录,授权
[root@openldap-master ~]# mkdir /var/log/slapd [root@openldap-master ~]# chmod 755 /var/log/slapd/ [root@openldap-master ~]# chown ldap.ldap /var/log/slapd/
5. 重启syslog服务和slapd服务
[root@openldap-master ~]# /etc/init.d/rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ] [root@openldap-master ~]# /etc/init.d/slapd restart Stopping slapd: [ OK ] Starting slapd: [ OK ] [root@openldap-master ~]# lsof -i:389 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME slapd 13773 ldap 7u IPv4 840484 0t0 TCP *:ldap (LISTEN) slapd 13773 ldap 8u IPv6 840485 0t0 TCP *:ldap (LISTEN)
6. 查看openldap日志信息
[root@openldap-master ~]# tail -f /var/log/slapd/slapd.log
四、server端安装migrationtools,创建根域条目(可选)
参考:http://book.51cto.com/art/201602/505737.htm
1. 安装migrationtools 工具
migrationtools 实现OpenLDAP 用户及用户组的添加。
[root@openldap-server openldap]# yum install migrationtools -y
2. 编辑/usr/share/migrationtools/migrate_common.ph并修改相关配置
[root@openldap-server openldap]# cp /usr/share/migrationtools/migrate_common.ph{,.bak} [root@openldap-server openldap]# vim /usr/share/migrationtools/migrate_common.ph # 搜索”dc=”,值改为与slapd.conf一致内容 ...... # Default DNS domain $DEFAULT_MAIL_DOMAIN = "qq.com"; # Default base $DEFAULT_BASE = "dc=qq,dc=com";
3. 创建OpenLDAP 根域条目,base.ldif
[root@openldap-server openldap]# /usr/share/migrationtools/migrate_base.pl > base.ldif [root@openldap-server openldap]# cat base.ldif dn: dc=qq,dc=com dc: qq objectClass: top objectClass: domain dn: ou=Hosts,dc=com ou: Hosts objectClass: top objectClass: organizationalUnit dn: ou=Rpc,dc=com ou: Rpc objectClass: top objectClass: organizationalUnit dn: ou=Services,dc=com ou: Services objectClass: top objectClass: organizationalUnit dn: nisMapName=netgroup.byuser,dc=com nismapname: netgroup.byuser objectClass: top objectClass: nisMap dn: ou=Mounts,dc=com ou: Mounts objectClass: top objectClass: organizationalUnit dn: ou=Networks,dc=com ou: Networks objectClass: top objectClass: organizationalUnit dn: ou=People,dc=com ou: People objectClass: top objectClass: organizationalUnit dn: ou=Group,dc=com ou: Group objectClass: top objectClass: organizationalUnit dn: ou=Netgroup,dc=com ou: Netgroup objectClass: top objectClass: organizationalUnit dn: ou=Protocols,dc=com ou: Protocols objectClass: top objectClass: organizationalUnit dn: ou=Aliases,dc=com ou: Aliases objectClass: top objectClass: organizationalUnit dn: nisMapName=netgroup.byhost,dc=com nismapname: netgroup.byhost objectClass: top objectClass: nisMap
可以编辑base.ldif 进行修改,将不需要的条目删除,然后通过ldapadd 导入至OpenLDAP目录树。
4. 添加base.ldif到ldap(输入密码为上面创建的:ldappassword)
[root@openldap-server openldap]# ldapadd -x -D "cn=Manager,dc=com" -w ldappassword -f ./base.ldif Enter LDAP Password: ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1) ' 出现这个错误的时候,查看服务和端口都已经开启了,需要你手动指定主机名和你的端口号(ldap端口号为389),使用-h 加上主机名。 [root@openldap-server openldap]# ldapadd -x -D "cn=Manager,dc=com" -w ldappassword -f ./base.ldif -h openldap-server -p 389 adding new entry "dc=qq,dc=com" adding new entry "ou=Hosts,dc=com" adding new entry "ou=Rpc,dc=com" adding new entry "ou=Services,dc=com" adding new entry "nisMapName=netgroup.byuser,dc=com" adding new entry "ou=Mounts,dc=com" adding new entry "ou=Networks,dc=com" adding new entry "ou=People,dc=com" adding new entry "ou=Group,dc=com" adding new entry "ou=Netgroup,dc=com" adding new entry "ou=Protocols,dc=com" adding new entry "ou=Aliases,dc=com" adding new entry "nisMapName=netgroup.byhost,dc=com"
5. 检查ldapadd是否成功(密码为上面创建的:ldappassword)(必须检查确认Manager数据添加了,才能通过PHPldapAdmin登录)
[root@openldap-server openldap]# ldapsearch -x -D "cn=Manager,dc=com" -b "ou=Aliases,dc=com" -w ldappassword # extended LDIF # # LDAPv3 # base <ou=Aliases,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # Aliases,qq.com dn: ou=Aliases,dc=com ou: Aliases objectClass: top objectClass: organizationalUnit # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
六、安装openLdap桌面服务
1. yum安装httpd及PHPLdapAdmin
[root@openldap-server openldap]# rpm -ivh http://mirrors.ukfast.co.uk/sites/dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm [root@openldap-server openldap]# yum install httpd PHPldapadmin -y
2. 配置/etc/httpd/conf.d/PHPldapadmin.conf允许从远程访问
[root@openldap-server openldap]# cp -a /etc/httpd/conf.d/PHPldapadmin.conf{,.bak} #可以先把此文件cp备份一份 [root@openldap-server openldap]# vim /etc/httpd/conf.d/PHPldapadmin.conf Alias /PHPldapadmin /usr/share/PHPldapadmin/htdocs Alias /ldapadmin /usr/share/PHPldapadmin/htdocs <Directory /usr/share/PHPldapadmin/htdocs> Order Deny,Allow Allow from all Allow from 127.0.0.1 #或者去掉下面这三行内容,表示运行所有客户机访问(本测试案例就去掉了这三行) Allow from ::1 Allow from all #允许哪些IP地址访问PHPldapadmin,我写的全部。 </Directory>
3. 修改/etc/PHPldapadmin/config.PHP配置用DN登录
[root@openldap-server openldap]# cp /etc/PHPldapadmin/config.PHP{,.bak} [root@openldap-server openldap]# vim /etc/PHPldapadmin/config.PHP ....... //$servers->setValue('login','attr','uid'); #注释掉这一行 $servers->setValue('login','dn'); #添加这一行 [root@openldap-server openldap]# diff /etc/PHPldapadmin/config.PHP /etc/PHPldapadmin/config.PHP.bak 398,399c398,399 < //$servers->setValue('login','uid'); < $servers->setValue('login','dn'); --- > $servers->setValue('login','uid'); >
4. 启动httpd服务
[root@openldap-server openldap]# chkconfig httpd on [root@openldap-server openldap]# service httpd start Starting httpd: httpd: apr_sockaddr_info_get() Failed for openldap-server httpd: Could not reliably determine the server's' fully qualified domain name,using 127.0.0.1 for ServerName [ OK ] [root@openldap-server openldap]# service httpd status httpd (pid 13010) is running... [root@openldap-server openldap]# lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 13010 root 4u IPv6 757231 0t0 TCP *:http (LISTEN) httpd 13012 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN) httpd 13013 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN) httpd 13014 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN) httpd 13015 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN) httpd 13016 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN) httpd 13017 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN) httpd 13018 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN) httpd 13019 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
5. 打开Web UI并登录LDAP
URL: $IP/PHPldapadmin 用户名 "cn=Manager,dc=com" 密码 "ldappassword"
七、新建组织(公司)、管理员、组及用户
添加用户和用户组的方式有两种。一种是将系统用户通过migrationtools 工具生成LDIF 文件并结合ldapadd 命令导入OpenLDAP 目录树中,生成OpenLDAP 用户。另一种通过自定义LDIF 文件并通过OpenLDAP 命令进行添加或者修改操作。本文主要介绍第二种来完成OpenLDAP用户的添加。
1. 组织
创建组织:
[root@openldap-server data]# vim o.ldif #在根目录下建立不同组织 dn: o=tengxun,dc=com objectclass: top objectclass: dcobject objectclass: organization dc: qq o: tengxun description: 腾讯 street: 深圳腾讯大厦
此LDIF 文件中存在中文字符,建议使用Linux dos2unix 命令进行转换,例如dos2unix -k –n filenew_file。作者建议尽可能不要使用中文字符进行添加,而使用英文添加。
导入组织数据
[root@openldap-server data]# ldapadd -x -D "cn=Manager,dc=com" -w ldappassword -f ./o.ldif -h openldap-server -p 389 adding new entry "o=tengxun,dc=com"
============================================================
如果报错:
[root@openldap-server data]# ldapadd -x -D "cn=Manager,dc=com" -w ldappassword -f ./o.ldif -h openldap-server -p 389 ldapadd: attributeDescription "dn": (possible missing newline after line 3,entry "o=tengxun,dc=com"?) adding new entry "o=tengxun,dc=com" ldap_add: Type or value exists (20) additional info: ou: value #0 provided more than once
产生原因:o.ldif文件中的不规范的空格所致!!即导入的数据含有空格所致!
纠错如下:
dn:(空格)o=tengxun,dc=com changetype:(空格)add(结尾无空格) objectclass:(空格)top(结尾无空格) objectclass:(空格)organizationalUnit(结尾无空格) ou:(空格)echnology(结尾无空格) (1空行,空行必须要定格,不能留空格)(结尾无空格) ........(后面的配置内容纠正方法同样)
===========================================================
查询刚导入数据
[root@openldap-server data]# ldapsearch -x -D "cn=Manager,dc=com" -b "o=tengxun,dc=com" -w ldappassword -h openldap-server -p 389 # extended LDIF # # LDAPv3 # base <o=tengxun,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # tengxun,qq.com dn: o=tengxun,dc=com objectClass: top objectClass: dcObject objectClass: organization dc: qq o: tengxun description:: 572R5biF street:: 5YyX5Lqs5biC5a6J57+U5YyX6YeM55SyMTHlj7fljJfkuqzliJvkuJrlpKfljqZC5bqnN zAx5a6k # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
2. 管理员及组
在新建组织下创建管理员及组
在tengxun组织下创建一个 Manager 的组织角色(该角色内的用户具有管理整个 LDAP 的权限)和 People 和 Group 两个组织单元: [root@openldap-server data]# vim admin_group.ldif # admin dn: cn=Manager,o=tengxun,dc=com objectClass: organizationalRole cn: Manager # Group组 dn: ou=Group,dc=com ou: Group objectClass: organizationalUnit # People组 dn: ou=People,dc=com ou: People objectClass: organizationalUnit
导入组数据
[root@openldap-server data]# ldapadd -x -D "cn=Manager,dc=com" -w ldappassword -f ./admin_group.ldif -h openldap-server -p 389 adding new entry "cn=Manager,dc=com"
通过以上的所有步骤,我们就设置好了一个 LDAP 目录树:其中基准 dn: o=tengxun,dc=com 是该树的根节点,其下有一个管理域 cn=Manager,dc=com 和两个组织单元 ou=People,dc=com 及 ou=Group,dc=com。
3. 用户
创建用户及部门(cn组)
[root@openldap-server data]# vim adduser.ldif # create new # replace to your own domain name for "dc=***,dc=***" section dn: uid=huateng.ma,ou=People,dc=com objectClass: top objectclass: person #objectclass: organizationalPerson objectclass: inetorgPerson objectClass: shadowAccount uid: huateng.ma cn: huateng.ma sn: ma displayName: 马化腾 ou: People description: 可视化 #userPassword: ldappassword userPassword: {SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1 mail: huateng.ma@qq.com dn: cn=kaifa,ou=Group,dc=com objectClass: top objectClass: groupOfUniqueNames cn: kaifa uniquemember: uid=huateng.ma,dc=com
导入用户数据
[root@openldap-server data]# ldapadd -x -D "cn=Manager,dc=com" -w ldappassword -f ./adduser.ldif -h openldap-server -p 389 adding new entry "uid=huateng.ma,dc=com" adding new entry "cn=kaifa,dc=com"
可以登陆PHPLDAPadmin的web界面查询新导入的数据
添加其它用户
[root@openldap-server data]# vim adduser.ldif # create new # replace to your own domain name for "dc=***,dc=***" section dn: uid=san.zhang,dc=com objectClass: top objectclass: person #objectclass: organizationalPerson objectclass: inetorgPerson objectClass: shadowAccount uid: san.zhang cn: san.zhang sn: zhang displayName: 张三 ou: People description: 可视化 #userPassword: ldappassword userPassword: {SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1 mail: san.zhang@qq.com
把san.zhang用户加入到kaifa组中(没验证)
dn: cn=kaifa,dc=com changetype: modify add: memberuid memberuid: san.zhang
或者
通过OpenLDAP界面把san.zhang用户添加到kaifa组中
点击左侧相应组织下的"ou=Group" --> "cn=kaifa" --> "uniqueMember" --> 点击下面的赋值,复制上面一行,然后修改uid保存即可。
八、参考:
http://book.51cto.com/art/201602/505669.htm
https://www.cnblogs.com/kevingrace/p/9052669.html
https://www.cnblogs.com/AloneSword/p/4758814.html
当你发现自己的才华撑不起野心时,就请安静下来学习吧
今天关于centos安装openldap过程和centos安装openmpi的讲解已经结束,谢谢您的阅读,如果想了解更多关于CentOS 6.4下编译安装OpenLDAP、Centos 6.5 搭建openldap、Centos 6.8 环境下 OpenLDAP 安装与部署、CentOS 6.9下OpenLDAP 的安装与配置的相关知识,请在本站搜索。
本文标签: