OpenLDAP是轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)的自由和开源的实现,在其OpenLDAP许可证下发行,并已经被包含在众多流行的Linux发行版中。

它主要包括下述4个部分:

slapd - 独立LDAP守护服务

slurpd - 独立的LDAP更新复制守护服务

实现LDAP协议的库

工具软件和示例客户端



服务器:192.168.136.248(server) 

hostname:  example.com


客户端:192.168.136.249 (client)

hostname:  client


首先配置服务器(server):


(1)     安装LDAP相关软件 

你现在准备安装软件; 这通常需要超级用户权限:

#yum list openldap*
#yum install-y  openldap openldap-clientsopenldap-servers

(2)     配置LDAP的域信息

#cd  /etc/openldap
#ls

你会看到以下几个文件

cacerts  ldap.conf schema  slapd.conf.bak  slapd.d

编辑配置文件。

首先你改名或移动openldap的配置文件目录lapd.d,不然它不会读/etc/openldap/slapd.conf

#mv  slapd.d  /root/slapd.d-bak                        //移动到/root下
#cp /usr/share/openldap-servers/slapd.conf.obsolete  /etc/openldap/slapd.conf 

然后,修改配置文件slapd.conf

#vi slapd.conf

找到并修改如下内容:

suffix             "dc=example,dc=com"                //设置主机名前缀
rootdn             "cn=Manager,dc=example,dc=com"                          //设置域
rootpw        123456          //取消左侧的注释和左侧的空格。后面的ldapadd命令要用的密码,中间用俩TAB键分割,然后保存修改并退出。
#slaptest -u  -f slapd.conf                          //测试配置文件是否正确
configfile testing succeeded

需要特别注意的是rootpw和123456(密码)之间必须是2个tab健,否则在后面测试的时候会报错。

(3)     创建数据库文件(从模板复制产生)

#cd  /var/lib/ldap

复制模板文件,不然重启的时候会报错valid49)说是不合法的密码的错误。

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
mv /etc/openldap/slapd.d{,.bak}
#chown ldap.ldap DB_CONFIG*                       //这里要添加*,否则后面启动服务会有警告

注意:这里ldap 用户 可以创建也可以不管(最好不要创建了)
# useradd ladp -d /var/lib/ldap:/sbin/nologin

(4)     启动LDAP服务

#/etc/init.d/slapd  start

或用如下命令:

#service  slapd start
#chkconfig slapd on                     //服务加入启动管理器中


此时你在/var/lib/ldap 执行ll 命令会看到一些db文件。

#ll  /var/lib/ldap
-rw-r--r--.1 ldap ldap      2048 Feb 26 15:53 alock
-rw-------.1 ldap ldap     24576 Feb 26 15:53__db.001
-rw-------.1 ldap ldap  17637376 Feb 26 15:53__db.002
-rw-------.1 ldap ldap 335552512 Feb 26 15:53 __db.003
-rw-------.1 ldap ldap   2359296 Feb 26 15:53__db.004
-rw-------.1 ldap ldap    802816 Feb 26 15:53__db.005
-rw-------.1 ldap ldap     32768 Feb 26 15:53__db.006
-rw-r--r--.1 ldap ldap       921 Feb 26 15:51DB_CONFIG
-rw-------.1 ldap ldap      8192 Feb 26 15:53dn2id.bdb
-rw-------.1 ldap ldap     32768 Feb 26 15:53id2entry.bdb
-rw-------.1 ldap ldap  10485760 Feb 26 15:53log.0000000001

(5)     检查搜索域

#ldapsearch -x -b"dc=example,dc=com"
  • -b 指定用作搜索起始点的专有名称。使用引号来指定该值

  • -x 用于对搜索得到的信息进行排序。#extended LDIF

#

# LDAPv3

# base<dc=chenggefeng.com> with scope subtree

#filter: (objectclass=*)

#requesting: ALL

#

 

# searchresult

search:2

result:32 No such object

 

#numResponses: 1

可能出现如下错误,原因是忘记了-x参数:

ASL/GSSAPI authentication started

ldap_sasl_interactive_bind_s: Local error (-2)

       additionalinfo: SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information(Credentials cache file '/tmp/krb5cc_0' not found)

(6)     创建待认证的用户

#useradd  ldapuser1
#echo"123456"|passwd --stdin ldapuser1
#useradd  ldapuser2
#echo "123456"|passwd--stdin ldapuser2
#useradd  ldapuser3
#echo "123456"|passwd--stdin ldapuser3

(7)     安装迁移工具migrationtools

#cd   /usr/share/doc/openldap-servers-2.4.23/

#less README.migration(这个命令可以不操作,只是提醒读者)


As fromFedora 9, MigrationTools are shipped as separate package.

Install "migrationtools" package to get them, e.g.:帮助文档需要你安装migrationtools

#yum installmigrationtools -y

安装成功之后会在   /usr/share/migrationtools

#cd   /usr/share/migrationtools
#ls
migrate_aliases.pl  migrate_all_offline.sh  migrate_hosts.pl   migrate_protocols.pl
migrate_all_netinfo_offline.sh  migrate_all_online.sh   
migrate_netgroup_byhost.pl  migrate_rpc.pl
migrate_all_netinfo_online.shmigrate_automount.pl 
migrate_netgroup_byuser.pl  migrate_services.pl
migrate_all_nis_offline.shmigrate_base.pl  migrate_netgroup.pl    migrate_slapd_conf.pl
migrate_all_nis_online.sh       migrate_common.ph       migrate_networks.pl
migrate_all_nisplus_offline.sh  migrate_fstab.pl        migrate_passwd.pl
migrate_all_nisplus_online.sh   migrate_group.pl      migrate_profile.pl


可以看到,有一组 Perl 脚本被安装到 /usr/share/openldap/migration/ 中执行迁移。这些 Perl 脚本的配置信息包含在 migrate_common.ph 文件的开头。对于我们来说,只需要修改命名前缀的变量来使用条目的识别名就足够了,如下所示:

#vi  migrate_common.ph


修改如下一些内容:

# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "example.com";   //改为 server 域名 即host

# Default base 
$DEFAULT_BASE = "dc=example,dc=com";  //改为 server 域名 即host


在进行这些修改之后,请运行脚本 migrate_base.pl,它会创建根项,并为 HostsNetworksGroup People 等创建低一级的组织单元。

(8)     创建认证账户文件

几个主要的概念:

dn:一条记录的位置

dc:一条记录所属区域

ou:一条记录所属组织

cn/uid:一条记录的名字/ID

 

  • 创建基本的数据库文件:

#./migrate_base.pl  > ./base.ldif

编辑修改刚才产生的文件:

#vim  base.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



  • 创建用户数据库文件:

#./migrate_passwd.pl    /etc/passwd ./user.ldif
编辑  user.ldif

#vim  user.ldif

删除除下面之外的所有条目:(主要是防止系统用户与后面客户端重复,如配置单机可不用删)


dn: uid=ldapuser1,ou=People,dc=example,dc=com
uid: ldapuser1
cn: ldapuser1
..........
homeDirectory:/home/ldapuser1
 
dn: uid=ldapuser2,ou=People,dc=example,dc=com
uid: ldapuser2
cn: ldapuser2
............
homeDirectory:/home/ldapuser2
 
dn: uid=ldapuser3,ou=People,dc=example,dc=com
uid: ldapuser3
cn: ldapuser3
............
homeDirectory:/home/ldapuser3


 

然后执行如下命令进行检测:

#ldapsearch  -x  -b  -L  "dc=example,dc=com"
extendedLDIF
#
# LDAPv3
# base<-L> with scope subtree
#filter: dc=example,dc=com
# requesting:ALL
#
 
# searchresult
search:2
result:34 Invalid DN syntax
text:invalid DN
 
#numResponses: 1


  • 创建组账户文件:

#./migrate_group.pl /etc/group  groups.ldif

编辑groups.ldif

#vim  groups.ldif

删除除下面之外的所有条目(可以点v选择开始,移动光标选择,按x删除块):
删除除下面之外的所有条目:(主要是防止系统用户与后面客户端重复,如配置单机可不用删)

dn: cn=ldapuser1,ou=Group,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapuser1
userPassword: {crypt}x
gidNumber: 601
 
dn:cn=ldapuser2,ou=Group,dc=example,dc=com
    .............
gidNumber: 602
 
dn:cn=ldapuser3,ou=Group,dc=example,dc=com
    .........
gidNumber: 603

检查产生的三个文件


#cd /usr/share/migrationtools
#llbase.ldif  groups.ldif user.ldif
-rw-r--r--. 1 root root  248Feb 26 18:02 base.ldif
-rw-r--r--. 1 root root  402Feb 26 18:16 groups.ldif
-rw-r--r--. 1 root root 1311 Feb 26 18:10 user.ldif


 

执行如下命令进行测试:

#service  slapd start                               //首先重新启动服务

#ldapadd  -D "cn=Manager,dc=example,dc=com" -W  -x -f  base.ldif



提示输入密码的时候,输入前面cd /etc/openldap/slapd.conf中配置的rootpw处配置的密码123456,如果出现错误:


ldap_bind: Invalid credentials (49)

就表示你要么给出了错误的"cn="条目,要么给出了错误的密码,要么就重新启动slapd服务

 

 

 

 

ldap_add: Already exists (68)

ldapadd  -D  "cn=Manager,dc=bgi,dc=com" -W   -x  -f  base.ldif –c  已经存在的情况

 

 

EnterLDAP Password:(输入你刚才设置的前面配置的rootpw密码),正确之后会显示:

adding new entry "dc=example,dc=com"
adding new entry"ou=People,dc=example,dc=com"
adding new entry"ou=Group,dc=example,dc=com"

#ldapadd  -D "cn=Manager,dc=example,dc=com"-W  -x -f  user.ldif
EnterLDAP Password:(输入你刚才设置的密码),正确之后会显示:
adding new entry"uid=ldapuser1,ou=People,dc=example,dc=com"
adding new entry"uid=ldapuser2,ou=People,dc=example,dc=com"
adding new entry"uid=ldapuser3,ou=People,dc=example,dc=com"

#ldapadd  -D "cn=Manager,dc=example,dc=com"-W  -x -f  groups.ldif
EnterLDAP Password:(输入你刚才设置的密码),正确之后会显示:
adding new entry"cn=ldapuser1,ou=Group,dc=example,dc=com"
adding new entry"cn=ldapuser2,ou=Group,dc=example,dc=com"
adding new entry"cn=ldapuser3,ou=Group,dc=example,dc=com"



此时运行:
# ldapsearch   -x -b "dc=example,dc=com"                                                //(查询命令)
输出如下内容:
===================================================
# ldapuser1, People, example.com
dn: uid=ldapuser1,ou=People,dc=example,dc=com
uid: ldapuser1
cn: ldapuser1
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQ2JG9IQUdDNU9UJE5udUlrSWxnZTF5dFVRWUkveWVkV2VlRmRXUS5
 la2o2bmF3aHByL3BFZ2F6RFpuOGRWd0lDZjhjaTJkNThZWmF3WFFpdUIyalZPNUhtaEZJd3VzdHEx
shadowLastChange: 16296
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 500
homeDirectory: /home/ldapuser1

# ldapuser2, People, example.com
dn: uid=ldapuser2,ou=People,dc=example,dc=com
uid: ldapuser2
cn: ldapuser2
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQ2JGZVYVQ2V0Z1JHpCTVNqUi5hWS9EYThNTWwwcVpRUVB0ZkZYUXN
 rOS5JdzFoOWVlYWFmWkhySkFCc2lvSVFYM3ZEUC54d21MNG1WdFJFd0Q3c1BtWkRvN2VFZS40eWIx
shadowLastChange: 16296
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 501
gidNumber: 501
homeDirectory: /home/ldapuser2
 
………………………………………………
# numResponses: 10
# numEntries: 9


(9)     打开服务器端防火墙的389号端口

可以用如下命令检测某个服务的端口:
#cat   /etc/services   |grep ldap     //通过该命令查看ldap服务的端口是什么
 
#iptables -I INPUT -ptcp --dport 389 -j ACCEPT

#iptables -I INPUT -pudp --dport 389 -j ACCEPT

#service    iptables save

#service   iptables restart


用如下命令检测某个服务器上的某个端口是否打开:

#telnet    服务器IP     端口号


一旦窗口没有任何信息或者出现服务器的服务信息,则表示端口打开。使用^+]断开测试,进入telnet的命令行模式,输入quit可以退出。


(10) GUI界面查看LDAP用户(如果没有  phpldapadmin包,以下可以不用做)

wget   http://nchc.dl.sourceforge.net/project/phpldapadmin/phpldapadmin-php5/1.2.3/phpldapadmin-1.2.2.zip

#cd   /var/www/html  
下载  phpldapadmin-1.2.2.tgz               //(版本不要下错啊!否则可能造成无法使用)  

#tar  zxf phpldapadmin-1.2.2.tgz   

#cd  phpldapadmin-1.2.2  

#cd  ../    

#mv  phpldapadmin-1.2.2  myldap   

#cd  myldap/config

#cp  config.php.example config.php

还有记得要装php-ldadp包和php包:

#yum  install php-ldap  php  -y   

#/etc/init.d/httpd  restart                               //如果httpd服务没安装,要先安装

#ifconfig|grep  cas                                   //查看本地IP地址


[root@example ~]# ifconfig|grep  cas 

          inet addr:192.168.136.248  Bcast:192.168.136.255  Mask:255.255.255.0


然后打开浏览器可以类似的用http://192.168.136.248/myldap访问LDAP。界面如下:

CentOS (RedHat) 6.4 使用 OpenLDAP _许可证

                           

如果http服务启动,但无法显示页面,可能是防火墙的问题,执行如下命令:

#iptables  -I  INPUT -p  tcp  -m tcp   --dport  80  -jACCEPT
#iptables  -I  INPUT -p  tcp  -m tcp  --dport  389  -jACCEPT  //LDAP 端口
#service   iptables save
#service  iptables restart


登录的时候:DN框输入:cn=Manager,dc=example,dc=com,密码框输入123456



(11) 客户端配置(在另外一台电脑上进行,要求两台电脑网络联通!!!

下面以RHEL6为例,介绍LDAP客户端的配置。

  • 打开LDAP配置界面

  • 客户端:192.168.136.249 (client)

  • hostname:  client

  • 如果是 centos 5.X 或者 redhat 5.X  很好配置:

  • 配置 LDAP 客户机

  • 用来设置客户机包括:

  • nss_ldap-226-6:包括两个 LDAP 访问客户机:nss_ldap 和 pam_ldap

    • nss_ldap 是一组 C 库扩展,它允许 LDAP 目录服务器用作一个用户和组信息的主源

    • pam_ldap 是一个 Linux-PAM 模块,它支持身份验证功能

  • LDAP 身份验证要想正确地工作,需要配置两个服务:系统命名服务和身份验证服务。

  • 系统命名服务(NSS)需要配置为使用 LDAP 来解析诸如用户和组帐号之类的资源。例如,在运行命令 ls -l 时,如果某个文件 inode 给出文件的所有者是 “user 501”,那么命名服务就需要将 “uid 501” 解析成用户名,并在 ls 命令输出结果中输出。通常来说,这是通过查找 /etc/passwd 文件中的所有用户帐号实现的。由于用户现在都存储在 LDAP 目录中,因此系统需要配置成同时对 passwd 文件和 LDAP 目录中的帐号进行解析。这种功能是通过 /usr/lib/libnss_ldap.so 库提供的。

  • 身份验证服务是实际向 LDAP 验证用户身份的服务。可插入身份验证模块(PAM)提供了本地 Linux 身份验证服务。下面我们将配置 PAM 先对本地的 /etc/passwd 文件检查用户帐号,然后再对 LDAP 服务器进行检查。PAM LDAP 模块可以用来将身份验证重定向到 LDAP 目录上。/lib/security/pam_ldap.so PAM 模块提供了 LDAP 身份验证功能。

  • 身份验证本身是由 PAM 程序执行的,它从身份验证候选机制中获取用户名,将其绑定到 OpenLDAP 服务器上,检索与这个 uid 条目(用户名条目)相关的 DN;从身份验证候选机制中获取密码,然后使用这个 DN 和密码试图将其绑定到 OpenLDAP 服务器上。如果绑定成功,PAM 会报告说这个用户已经成功通过了 pam_ldap.so 提供的身份验证测试。根据 PAM 的配置不同,在用户看到命令行提示符之前可能会执行其他测试。

  • 我们可以采用两种方法来配置LDAP客户机。一种快速而简单的方法是运行/usr/sbin/authconfig-gtk,并在两个屏幕中输入信息。另外一种方法是通过编辑客户机 LDAP配置文件/etc/ldap.conf,然后修改 /etc/nsswitch.conf、/etc/sysconfig/authconfig 和 /etc/pam.d/system-auth。

  • 首先让我们来看一下如何运行 authconfig-gtk:

  • 发现 Redhat 5 和CentOS 6 又不一样,以下是Redhat 5的界面:

  • 这里 dc=example,dc=com 

  • 这里 IP: ldap://192.168.136.248/




  • RedHat 5测试通过:



    下面讲一下redhat 6.X 



[root@client ~]# vi /etc/sssd/sssd.conf 
[domain/default]
ldap_id_use_start_tls = False
cache_credentials = True
ldap_search_base = dc=example,dc=com
krb5_realm = EXAMPLE.COM
krb5_server = kerberos.example.com
enumerate=true
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://192.168.136.248/
ldap_tls_cacertdir = /etc/openldap/cacerts
[sssd]
services = nss, pam
config_file_version = 2
domains = default
[nss]
[pam]
[sudo]
[autofs]
[ssh]
[pac]
  • 那就安装pam_ldap,此处略去几十个字。

  •    97  yum install nss-pam-ldapd:
       98  yum install nss-pam-ldapd
       99  yum install  nslcd
      100  yum install  pam_ldap
      101  yum install  nss-pam-ldapd
      102  yum install  glibc-common
      103  yum install  nss-pam-ldapd
      104  service  nslcd status
      105  vi /etc/nslcd.conf
  • 继续往后走,还是登陆不了,《LDAP Authentication On Red Hat Enterprise 6》指出还得启动nslcd及安装nss-pam-ldapd。The nss-pam-ldapd package allows LDAP directory servers to be used as a primary source of name service information. (Name service information typically includes users, hosts, groups, and other such data historically stored in flat files or NIS.)

  • 好,那就再安装nss-pam-ldapd:


[root@client ~]# vi /etc/nslcd.conf 

找到这几行看一下是否填对 ?

uid nslcd
gid ldap
# This comment prevents repeated auto-migration of settings.
uri ldap://192.168.136.248/
base dc=example,dc=com



  • [root@OpenLDAP-Client ~]# service  nslcd status
    nslcd (pid  2451) is running...


  • 几番测试死活不行,遂直接改成第二张方案,即编辑客户机文件

  • LDAP 配置文件 /etc/openldap/ldap.conf

  • /etc/nsswitch.conf

  • /etc/sysconfig/authconfig

  • /etc/pam.d/system-auth

  • 1. /etc/openldap/ldap.conf:
  • PAM 和 NSS 模块使用的基本配置文件是 /etc/openldap/ldap.conf。host 选项指定 LDAP 服务器,base 选项指定这个目录使用的 DN。

  •  cat /etc/openldap/ldap.conf
    URI ldap://192.168.136.248/BASE dc=example,dc=com 
    TLS_CACERTDIR /etc/openldap/cacerts
  • 2. /etc/nsswitch.conf
  • 要让 NSS 服务使用 OpenLDAP 服务器,需要将 “ldap” 添加到 /etc/nsswitch.conf 文件的 passwd、shadow 和 group 行中,如下所示:

  • passwd:     files ldap
    shadow:     files ldap
    group:      files ldap
  • 3. /etc/sysconfig/authconfig
  • 用来跟踪特定身份验证机制是否已经启用的文件是 /etc/sysconfig/authconfig。我们可以希望以下条目的值都是 “yes”:

  • cat /etc/sysconfig/authconfig
    USELDAP=yes
    USELDAPAUTH=yes
    USEMD5=yes
    USESHADOW=yes
    USELOCAUTHORIZE=yes
  • 4. /etc/pam.d/system-auth

    要让 PAM 身份验证服务使用 OpenLDAP 服务器,请将 pam_ldap 行加入到 /etc/pam.d/system-auth 中,位置在对应的标准 pam_unix.so 条目之后:

  • session     required      pam_unix.sosession     optional      pam_ldap.so


  • service sssd restart
  • service  nslcd restart
  • 2014-08-16更新:

  • 今天找了个RH的工程师帮我看了下,很快就找到了原因,真是各种囧啊!其实只需要把ssl start_tls在nslcd.conf中注释掉就可以:CentOS (RedHat) 6.4 使用 OpenLDAP _Linux_02



下面是图形配置: 这里不详细介绍了 网上一大堆
#setup
然后选择第一项,或者用如下命令,将会看到配置界面:
#authchonfig-tui
配置选项
具体配置项目依照右侧的图像选择即可:
左侧选择:useLDAP
右侧选择:use   MD5 …;use   shadow…;use  LDAP …和 Local auth…四项。
       然后,点击NEXT后,在新出现的窗口中根据需要填写,具体如下:
在Server框中输入LDAP服务的地址:LDAP://服务器IP
在基本DN中输入dc=example,dc=com    //这里要和前面的配置一致。
如果要采用加密的认证方式(考试时候要求),则要选择上方的TLS复选框,并且要将服务器端配置好的数字签名(如上右图提示)下载到/etc/openldap/cacerts目录下。在RHCE认证考试中,会提供证书下载链接的。
配置完成后,可以通过查看ldap客户端配置文件进行检查:
#vi /etc/openldap/ldap.conf
再次检查/etc/nsswitch.conf的配置是否发生变化,是否可以找到如下形式:
这表示LDAP认证已经发挥作用。
测试配置
执行如下命令测试是否可以从LDAP服务器活动账户信息:
#getent   passwd  |grep  ldapuser                 //ldapuserX是前面配置好的账户
如果返回类似如下信息,说明正常!
如果没有返回信息,或返回错误,请检查配置,重新进行测试。如果检查配置没有错误,可以做如下修改,重新进行测试。
将/etc/sssd/sssd.conf文件中的#enumerate=false,修改为:enumerate=true,这样修改完后,getent就会从LDAP查找账户信息。
并重新执行如下命令:

#service sssd restart


  • 尝试切换用户测试

#su  - ldapuser1



显示如上信息,说明账户可以登录,但没找到用户主目录。这需要在本地配置或者通过nfs挂载路径。

(12) 实现基于NFSLDAP用户主目录(以下在服务器端安装)

  • 安装NFS服务器

#yum  install  -y  nfs


  • 配置nfs服务器

nfs服务器上输出/home目录,注意,输出的目录上必须有用户登录的目录!

#vi   /etc/exports


输入如下内容并保存:
/home            *(rw,sync)                           //根据需要,可能要修改*,限制访问的网络
查找SELinux中关于nfs的配置项目,找到关于nfs主目录的项目:
#getsebool    -a  |grep  nfs
allow_ftpd_use_nfs -->off
allow_nfsd_anon_write -->off
git_system_use_nfs -->off
httpd_use_nfs --> off
nfs_export_all_ro --> on
nfs_export_all_rw --> on
qemu_use_nfs --> on
samba_share_nfs --> off
use_nfs_home_dirs--> on            
#上行就是允许远程挂载用户主目录的选项,如果不是on则远程用户无权限进入自己的目录。
virt_use_nfs --> off
xen_use_nfs --> off
用如下的命令修改选项:
#setsebool  -P    use_nfs_home_dirs   on             //-P表示重新启动依然有效
设置完后,冲洗器的nfs服务器:
#service   nfs restart
#chkconfig nfs on
检查nfs输出:
#showmount   -e
Export list for RHCE01:
/home *
可能报错:
clnt_create:RPC:Unknownhost
解决办法:
#/etc/init.d/rpcsvcgssd  status
rpc.svrgssdis   stopped
#/etc/init.d/rpcsvrgssd   start
#chkconfig   rpcsvrgssd  on
#service  nfs   restart


配置防火墙,允许远程挂载:

#iptables   -I  INPUT   -p  tcp  -mtcp  --dport  2049   -j  ACCEPT 
#service   iptables  save                                      //保存防火墙配置项
#service   iptables restart                                     //重新启动防火墙


可以在LDAP客户端用如下命令测试端口是否可连接:

#telnet    nfs服务器IP     2049

如果出现如下内容,则表示端口可以连接,并按ctrl+]断开,并输入quit推出Telnet


  • LDAP客户端(一下在客户端进行)

  • 确保已经安装了autofs服务

#rpm   -qa|grep autofs

  1. b)      配置autofs服务

#vi    /etc/auto.master


最后加入如下行并保存:

/home     auto.nfs                                         //表示挂载到本地的位置和配置文件
#vi   /etc/auto.nfs


输入如下内容并保存:

*     -fstype=nfs,rw,sync    192.168.136.248:/home/&


说明,上面的*表示要挂载的某用户的目录,后面的&表示用户名。

  1. c)       测试登录

用如下命令测试:

#su   - ldapuser1


出现如下结果,即表示成功!注意,这时候,登录的ldapuser1帐号不在本地,而是在LDAP服务器上。

CentOS (RedHat) 6.4 使用 OpenLDAP _客户端_03



最后

如果一切顺利的话(目前在RH 5.0的Client测试通过),用户帐号信息可以从客户机系统中删除并从 LDAP 目录中进行获取了。当用户试图登录客户机系统时,PAM 身份验证服务就会从用户那里获取用户名,在我们的例子中是 ldapuser。PAM 会从 LDAP 服务器中检索识别名(DN)条目 dn: uid=ldapuser, ou=People, dc=vnxldap, dc=com.。PAM 然后会从用户那里获取密码。然后 PAM 试图使用这个 DN 和密码与 LDAP 服务器进行绑定。DN 和密码都以正文文本的格式发送给 LDAP 服务器。在对密码进行散列操作之后,如果服务器可以让用户登录,就会向 PAM 报告说已经成功进行了绑定。成功绑定可以完全满足 PAM 对 pam_ldap 模块汇报成功的标准,如果所有其他 PAM 标准都已经满足了,那么就允许用户登录到系统中。

当 LDAP 服务器对身份验证进行处理时,需要解决另外两个问题才能满足提供可靠安全的身份验证的目标。现在,任何客户机系统不能成功地与 LDAP 服务器进行通信都会阻止用户登录客户机系统。在下一节中我们将看到如何消除这种单点故障,这将显示客户机如何从备份服务器上访问 LDAP 目录。由于用户密码是在网络上以正文文本格式传输的,因此这并不能满足安全身份验证的需求。配置 TLS 安全性 将解决这个问题。

参考