LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 695|回复: 0

RHEL6 下配置LDAP认证服务以及基于NFS的用户主目录自动挂载

[复制链接]
发表于 2012-2-27 19:28:23 | 显示全部楼层 |阅读模式
RHEL6 下配置LDAP认证服务
(1)         安装LDAP相关软件
你现在准备安装软件; 这通常需要超级用户权限:
#yum  list openldap*
#yum  install -y  openldap  openldap-clients  openldap-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    ~/slapd.d-bak                                //移动到/root下
#mv  slapd.conf.bak  slapd.conf
然后,修改配置文件slapd.conf
#vi  slapd.conf
找到并修改如下内容:
suffix                "dc=syd168.com"                        //设置主机名前缀
rootdn                "cn=Manager,dc=syd168.com"                                //设置域
rootpw                syd168
#slaptest -f slapd.conf                                //测试配置文件是否正确
config file testing succeeded
需要特别注意的是rootpw和syd168之间必须是2个tab健,否则在后面测试的时候会报错。
(3)         创建数据库文件(从模板复制产生)
#cd  /var/lib/ldap
复制模板文件,不然重启的时候会报错valid(49)说是不合法的密码的错误。
#cp  /usr/share/doc/openldap-servers-2.4.19/DB_CONFIG.example   ./
#mv  DB_CONFIG.example  DB_CONFIG
#chown  ldap.ldap  DB_CONFIG
(4)         启动LDAP服务
#/etc/init.d/slapd  start
或用如下命令:
#service  slapd  start
此时你在/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:51 DB_CONFIG
-rw-------. 1 ldap ldap      8192 Feb 26 15:53 dn2id.bdb
-rw-------. 1 ldap ldap     32768 Feb 26 15:53 id2entry.bdb
-rw-------. 1 ldap ldap  10485760 Feb 26 15:53 log.0000000001
(5)         检查搜索域
#ldapsearch  -x  -b  "dc=syd168.com"
        -b 指定用作搜索起始点的专有名称。使用引号来指定该值
        -x 用于对搜索得到的信息进行排序。
# extended LDIF
#
# LDAPv3
# base <dc=syd168.com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1
可能出现如下错误,原因是忘记了-x参数:
ASL/GSSAPI authentication started
ldap_sasl_interactive_bind_s: Local error (-2)
        additional info: 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.19/
#less  README.migration
As from Fedora 9, MigrationTools are shipped as separate package.
Install "migrationtools" package to get them, e.g.: 帮助文档需要你安装migrationtools
#yum  install  migrationtools  -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.sh migrate_automount.pl
migrate_netgroup_byuser.pl  migrate_services.pl
migrate_all_nis_offline.sh migrate_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 = "syd168.com";
# Default base
$DEFAULT_BASE ="dc=syd168.com";
在进行这些修改之后,请运行脚本 migrate_base.pl,它会创建根项,并为 Hosts、Networks、Group 和 People 等创建低一级的组织单元。
(8)         创建认证账户文件
几个主要的概念:
dn:一条记录的位置
dc:一条记录所属区域
ou:一条记录所属组织
cn/uid:一条记录的名字/ID

        创建基本的数据库文件:
#./migrate_base.pl  >  base.ldif
编辑修改刚才产生的文件:
#vim  base.ldif
删除除下面之外的所有条目:
dn: dc=syd168.com
dc: syd168.com
objectClass: top
objectClass: domain

dn: ou=People,dc= syd168.com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc= syd168.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= syd168.com
uid: ldapuser1
cn: ldapuser1
..........
homeDirectory: /home/ldapuser1

dn: uid=ldapuser2,ou=People,dc= syd168.com
uid: ldapuser2
cn: ldapuser2
............
homeDirectory: /home/ldapuser2

dn: uid=ldapuser3,ou=People,dc= syd168.com
uid: ldapuser3
cn: ldapuser3
............
homeDirectory: /home/ldapuser3
然后执行如下命令:
#ldapsearch  -x  -b  "dc=syd168.com"

        创建组账户文件:
#./migrate_group.pl  /etc/group   groups.ldif
编辑groups.ldif
#vim  groups.ldif
删除除下面之外的所有条目(可以点v选择开始,移动光标选择,按x删除块):
dn: cn=ldapuser1,ou=Group,dc=syd168.com
objectClass: posixGroup
objectClass: top
cn: ldapuser1
userPassword: {crypt}x
gidNumber: 601

dn: cn=ldapuser2,ou=Group,dc= syd168.com
    .............
gidNumber: 602

dn: cn=ldapuser3,ou=Group,dc= syd168.com
    .........
gidNumber: 603
检查产生的三个文件
#cd  /usr/share/migrationtools
#ll  base.ldif  groups.ldif  user.ldif
-rw-r--r--. 1 root root  248 Feb 26 18:02 base.ldif
-rw-r--r--. 1 root root  402 Feb 26 18:16 groups.ldif
-rw-r--r--. 1 root root 1311 Feb 26 18:10 user.ldif
测试:
# ldapadd  -D  "cn=Manager,dc=syd168.com"  -W   -x  -f  base.ldif
出现错误:
ldap_bind: Invalid credentials (49)
就表示你要么给出了错误的"cn="条目,要么给出了错误的密码
Enter LDAP Password输入你刚才设置的密码),正确之后会显示:
adding new entry "dc=syd168.com"
adding new entry "ou=People,dc=syd168.com"
adding new entry "ou=Group,dc=syd168.com"   
# ldapadd  -D  "cn=Manager,dc=syd168.com"  -W   -x  -f  user.ldif
Enter LDAP Password输入你刚才设置的密码),正确之后会显示:
adding new entry "uid=ldapuser1,ou=People,dc=syd168.com"
adding new entry "uid=ldapuser2,ou=People,dc=syd168.com"
adding new entry "uid=ldapuser3,ou=People,dc=syd168.com"   
# ldapadd  -D  "cn=Manager,dc=syd168.com"  -W   -x  -f  groups.ldif
Enter LDAP Password输入你刚才设置的密码),正确之后会显示:
adding new entry "cn=ldapuser1,ou=Group,dc=syd168.com"
adding new entry "cn=ldapuser2,ou=Group,dc=syd168.com"
adding new entry "cn=ldapuser3,ou=Group,dc=syd168.com"   
此时运行:
# ldapsearch   -x -b "dc=syd168.com"                                                         //(查询命令)
输出如下内容:
===================================================
# extended LDIF
#
# LDAPv3
# base <dc=syd168.com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# syd168.com
dn: dc=syd168.com
dc: syd168.com
objectClass: top
objectClass: domain

# People, syd168.com
dn: ou=People,dc=syd168.com
ou: People
objectClass: top
objectClass: organizationalUnit

………………………………………………
# numResponses: 10
# numEntries: 9
===========================================================
(9)         用GUI界面查看LDAP用户
#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地址
inet addr:172.16.0.6  Bcast:172.16.255.255  Mask:255.255.0.0
inet addr:10.8.22.19  Bcast:10.8.22.255  Mask:255.255.255.0
inet addr:192.168.100.1  Bcast:192.168.100.255  Mask:255.255.255.0
然后打开浏览器可以类似的用http://10.8.22.19/myldap访问LDAP。界面如下:

如果http服务启动,但无法显示页面,可能是防火墙的问题,执行如下命令:
#iptables  -I  INPUT  -p  tcp  -m  tcp   --dport  80  -j ACCEPT
#iptables  -I  INPUT  -p  tcp  -m  tcp  --dport  389  -j ACCEPT  //LDAP 端口
#service   iptables  save
#service  iptables  restart
登录的时候:DN框输入:cn=Manager,dc=syd168.com,密码框输入123456。

(10)         客户端配置
下面以RHEL6为例,介绍LDAP客户端的配置。
1)        打开LDAP配置界面
#setup
然后选择第一项,或者用如下命令,将会看到配置界面:
#authchonfig-tui
   

2)        配置选项
具体配置项目依照右侧的图像选择即可:
左侧选择:use  LDAP
右侧选择:use   MD5 …;use   shadow…;use  LDAP …和 Local auth…四项。
        然后,点击NEXT后,在新出现的窗口中根据需要填写,具体如下:
   
在Server框中输入LDAP服务的地址:LDAP://服务器IP
在基本DN中输入dc=syd168.com    //这里要和前面的配置一致。
如果要采用加密的认证方式,则要选择上方的TLS复选框,并且要将服务器端配置好的数字签名(如上右图提示)下载到/etc/openldap/cacerts目录下。在RHCE认证考试中,会提供证书下载链接的。
        配置完成后,可以通过查看ldap客户端配置文件进行检查:
#etc/openldap/ldap.conf

        再次检查/etc/resolv.conf的配置是否发生变化,如下形式:

这表示LDAP认证已经发挥作用。
3)        测试配置
执行如下命令测试是否可以从LDAP服务器活动账户信息:
#getent   passwd   |grep  ldapuser                        //ldapuserX是前面配置好的账户
如果返回类似如下信息,说明正常!

如果没有返回信息,或返回错误,请检查配置,重新进行测试。
如果检查配置没有错误,可以做如下修改,重新进行测试。
将/etc/sssd/sssd.conf文件中的#enumerate=false,修改为:enumerate=true,这样修改完后,getent就会从LDAP查找账户信息。
并重新执行如下命令:
#service  sssd  restart
4)        尝试切换用户测试
#su  -  ldapuser1

显示如上信息,说明账户可以登录,但没找到用户主目录。这需要在本地配置或者通过nfs挂载路径。
(11)         实现基于NFS的LDAP用户主目录
1)        配置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
检查nfs输出:
#showmount   -e
Export list for RHCE01:
/home *
配置防火墙,允许远程挂载:
#iptables   -I   INPUT   -p  tcp  -m tcp  --dport  2049    -j  ACCEPT
#service   iptables   save                                                //保存防火墙配置项
#service   iptables  restart                                                //重新启动防火墙
可以在LDAP客户端用如下命令测试端口是否可连接:
#telnet    nfs服务器IP     2049
如果出现如下内容,则表示端口可以连接,并按ctrl+]断开,并输入quit推出Telnet。

2)        配LDAP客户端
a)         确保已经安装了autofs服务
b)        配置autofs服务
#vi    /etc/auto.master
最后加入如下行并保存:
/home     auto.nfs                                                //表示挂载到本地的位置和配置文件
#vi   /etc/auto.nfs
输入如下内容并保存:
*         -fstype=nfs,rw,sync      172.16.0.6:/home/&
说明,上面的*表示要挂载的某用户的目录,后面的&表示用户名。
c)        测试登录
用如下命令测试:
#su   -  ldapuser1
出现如下结果,即表示成功!注意,这时候,登录的ldapuser1帐号不在本地,而是在LDAP服务器上。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表