在CentOS 6.5上配置Openldap客户端

简介:

网上有很多Openldap安装部署的文章,往往这些文章都浓墨重彩的描述服务端(Server)的安装和部署,以及排错等过程及说明,但是作为一个C/S架构的软件,可能很多技术牛人认为客户端(Client)的安装就不过如此而已了(虽然有的博客贴出了在桌面环境下设置,不过我觉得生产服务器大部分都是没有桌面环境的),所以大多都寥寥几笔带过,于是就导致配置一个服务端可能有各种教程,反正轻易的就能完成,即使出错也有章可循,而客户端则恰恰相反。然而,配置Openldap的初衷就是用来管理客户端和用户、用户组,既然服务器端已经OK了,那么后续肯定要将众多的Linux服务器加入这个ldap域中来,从而实现统一身份认证,所以别的不多说,以CentOS 6.5为例配置Openldap的客户端。

1、准备工作

1
2
3
4
5
6
7
8
9
#停止iptables,并查看iptables状态
/etc/init .d /iptables  stop
iptables -L -n
#禁用SELinux,并查看SELinux状态
setenforce 0
getenforce
#编辑/etc/hosts,添加openldap server的记录
echo  "192.168.49.138   ldapsrv01.contoso.com"  >> /etc/hosts
#添加成功后,最好ping一下,看是否能解析正常

2、安装openldap客户端软件包

1
yum -y  install  nss-pam-ldapd pam_ldap openldap-clients

3、配置/etc/sysconfig/authconfig

/etc/sysconfig/authconfig 文件由authconfig-5.3.21-3.e15RPM包生成系统默认安装。配置该文件用来跟踪LDAP身份认证机制是否正确启用。

1
2
3
4
5
6
cp  /etc/sysconfig/authconfig  /etc/sysconfig/authconfig .bak$( date  +%F)
sed  -i  '/USESYSNETAUTH/s/no/yes/'  /etc/sysconfig/authconfig
sed  -i  '/USELDAPAUTH/s/no/yes/'  /etc/sysconfig/authconfig
sed  -i  '/USEMKHOMEDIR/s/no/yes/'  /etc/sysconfig/authconfig
sed  -i  '/PASSWDALGORITHM/s/md5/yes/'  /etc/sysconfig/authconfig
sed  -i  '/USELDAP/s/no/yes/'  /etc/sysconfig/authconfig

[root@ldapclient ~]# diff /etc/sysconfig/authconfig.bak2016-09-11 /etc/sysconfig/authconfig

2c2

< USEMKHOMEDIR=no

---

> USEMKHOMEDIR=yes

12,13c12,13

< PASSWDALGORITHM=md5

< USELDAPAUTH=no

---

> PASSWDALGORITHM=yes

> USELDAPAUTH=yes

21c21

< USELDAP=no

---

> USELDAP=yes

24c24

< USESYSNETAUTH=no

---

> USESYSNETAUTH=yes

补充一点,也可以用authconfig-tui命令打开一个图形化的界面来配置,但是不推荐使用,因为字符或语言的关系,你可能看到的是乱码的界面,当然字符和语言都能调整,问题是耗费了事假;另外就是,如果你自己已经配置过/etc/openldap/ldap.conf,再通过authconfig-tui图形界面配置ldapserver信息后,可能会造成你的/etc/openldap/ldap.conf文件多出一些字符,就是因为图形界面的一些空格或者其他看不到的字符造成的更改。

4、配置/etc/nsswith.conf

/etc/nsswith.conf文件由glibc-2.5-24生成,CentOS5.2中缺省安装。该文件用于名称转换服务。通常LINUX系统身份验证读取本地文件,要使身份验证查询通过LDAP服务器必须在该文件中找到passwd;shadow;group;三行在files后空格添加“ldap”

1
2
3
4
cp  /etc/nsswitch .conf  /etc/nsswitch .conf.bak$( date  +%F)
sed  -i  '/^passwd:/s/files/files   ldap/'  /etc/nsswitch .conf
sed  -i  '/^shadow:/s/files/files   ldap/'  /etc/nsswitch .conf
sed  -i  '/^group:/s/files/files   ldap/'  /etc/nsswitch .conf

[root@ldapclient ~]# egrep "^passwd|^shadow|^group" /etc/nsswitch.conf

passwd:     files   ldap

shadow:     files   ldap

group:      files   ldap

5、配置/etc/pam.d/system-auth

身份验证服务是实际向LDAP验证用户身份的服务。可插入身份验证模块(PAM)提供了本地Linux身份验证服务。pam_unix.so模块是通用模块,使PAM机制对本地的/etc/passwd文件检查用户帐号。PAMLDAP模块可以用来将身份验证重定向到LDAP目录上。身份验证本身是由PAM程序执行的,它从身份验证候选机制中获取用户名,将其绑定到openLDAP 服务器上。如果绑定成功,PAM会报告说这个用户已经成功通过了pam_ldap.so提供的身份验证测试。根据PAM的配置不同,在用户看到命令提示符之前可能会执行其它测试。

/etc/pam.d/system-auth文件是CentOS的系统认证PAM文件。在该文件的auth,account,password,session四段中pam_unix.so模块后添加pam_ldap.so模块使身份验证先对本地的/etc/passwd文件检查用户帐号,然后再对LDAP服务器进行检查。同时因为是LDAP认证需要为用户创建根目录,所以还必须在会话(SESSION)阶段增加pam_mkhomedir.so模块,为用户登录自动创建宿主目录。

[root@ldapclient sysconfig]# cat /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_ldap.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_ldap.so

account     required      pam_permit.so


password    requisite     pam_cracklib.so try_first_pass retry=3 type=

password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok

password    sufficient    pam_ldap.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     required      pam_mkhomedir.so skel=/etc/skel/ umask=0077

session     optional      pam_ldap.so

#蓝色部分为添加的配置

6、配置/etc/openldap/ldap.conf

1
2
3
cp  /etc/openldap/ldap .conf  /etc/openldap/ldap .conf.bak$( date  +%F)
echo  "BASE    dc=contoso,dc=com"  >> /etc/openldap/ldap .conf
echo  "URI    ldap://ldapsrv01.contoso.com"  >> /etc/openldap/ldap

[root@ldapclient ~]# tail -2 /etc/openldap/ldap.conf

BASE    dc=contoso,dc=com

URI    ldap://ldapsrv01.contoso.com

7、使用ldapsearch命令测试能否读取openldap server中的数据

[root@ldapclient ~]# ldapsearch -x -b "dc=contoso,dc=com"

# extended LDIF

#

# LDAPv3

# base <dc=contoso,dc=com> with scope subtree

# filter: (objectclass=*)

# requesting: ALL

#


# contoso.com

dn: dc=contoso,dc=com

objectClass: organization

objectClass: dcObject

dc: contoso

o: contoso


# People, contoso.com

dn: ou=People,dc=contoso,dc=com

objectClass: organizationalUnit

ou: People


# group, contoso.com

dn: ou=group,dc=contoso,dc=com

objectClass: organizationalUnit

ou: group


# machines, contoso.com

dn: ou=machines,dc=contoso,dc=com

objectClass: organizationalUnit

ou: machines


# sudoers, group, contoso.com

dn: cn=sudoers,ou=group,dc=contoso,dc=com

objectClass: posixGroup

description: sudoers

gidNumber: 10000

cn: sudoers


# charles lv, People, contoso.com

dn: cn=charles lv,ou=People,dc=contoso,dc=com

objectClass: posixAccount

objectClass: inetOrgPerson

objectClass: organizationalPerson

objectClass: person

homeDirectory: /home/charleslv

loginShell: /bin/bash

uid: charleslv

cn: charles lv

uidNumber: 10000

gidNumber: 10000

userPassword:: e1NTSEF9YW8wUkhDdElFYTh0Yy9RU3Q0QitXdDY4ckJsU2VGQm8=

description: charles lv

sn: lv

givenName: charles

initials: charles lv


# eric li, People, contoso.com

dn: cn=eric li,ou=People,dc=contoso,dc=com

objectClass: posixAccount

objectClass: inetOrgPerson

objectClass: organizationalPerson

objectClass: person

homeDirectory: /home/ericli

loginShell: /bin/bash

uid: ericli

cn: eric li

uidNumber: 10001

gidNumber: 10000

userPassword:: e1NTSEF9eE00RFB0VkhmM2FGQnRpRUJUSTdHSnZ3S0kxdUxsSkU=

description: eric li

sn: li

givenName: eric

initials: eric li


# developers, contoso.com

dn: ou=developers,dc=contoso,dc=com

ou: developers

objectClass: organizationalUnit

objectClass: top


# app, developers, contoso.com

dn: ou=app,ou=developers,dc=contoso,dc=com

ou: app

objectClass: organizationalUnit

objectClass: top


# web, developers, contoso.com

dn: ou=web,ou=developers,dc=contoso,dc=com

ou: web

objectClass: organizationalUnit

objectClass: top


# java, developers, contoso.com

dn: ou=java,ou=developers,dc=contoso,dc=com

ou: java

objectClass: organizationalUnit

objectClass: top


# bryanz, sudoers, group, contoso.com

dn: cn=bryanz,cn=sudoers,ou=group,dc=contoso,dc=com

givenName: bryan

sn: zhao

uid: bryanz

userPassword:: e01ENX00UXJjT1VtNldhdStWdUJYOGcrSVBnPT0=

uidNumber: 1000

gidNumber: 10000

homeDirectory: /home/bryanz

loginShell: /bin/sh

objectClass: inetOrgPerson

objectClass: posixAccount

objectClass: top

cn: bryanz


# zhangs, People, contoso.com

dn: uid=zhangs,ou=People,dc=contoso,dc=com

objectClass: posixAccount

objectClass: top

objectClass: inetOrgPerson

gidNumber: 10000

givenName: zhang

sn: san

displayName: zhang san

uid: zhangs

homeDirectory: /home/zhangs

loginShell: /bin/bash

cn: zhang san

uidNumber: 47180

userPassword:: e1NTSEF9Nmk2cm1wbXpyK3JzVEwyZk0wanR6d2tKOFNWMk9FdEs=


# search result

search: 2

result: 0 Success


# numResponses: 14

# numEntries: 13

这里成功读取了ldap中的数据,网上给出的大部分教程,到此之后就直接service nscd restart,然后就可以使用getent测试获取ldap中的用户信息,我分别在CentOS 5.5和CentOS 6.5上做了测试,都无法获取,而且也无法使用id user这个命令查询ldap上用户的信息,所以该方法不可取,至少在CentOS 6上是不行的。

补充:如果出现“ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)”,那么解决该问题的方法是:

      1)检查/etc/hosts文件,是否有ldapserver的记录,最好能ping一下,看能否解析成功

      2)到openldap server上检查slapd服务是否正在运行,如果没有,启动slapd服务

      3)检查/etc/openldap/ldap.conf文件,查看里面的BASE和URI是否正确,很有可能是在图形界面中的设置,导致配置文件多了一些字符,从而出错    

8、使用authconfig命令启动nslcd

1
2
authconfig --enableldap --enableldapauth --ldapserver=ldapsrv01.contoso.com --ldapbasedn= "dc=contoso,dc=com"  --enablemkhomedir --update
#该命令要包含ldapserver和basedn的信息

9、测试ldap用户登录

[root@ldapclient ~]# getent passwd|grep charleslv

charleslv:{SSHA}ao0RHCtIEa8tc/QSt4B+Wt68rBlSeFBo:10000:10000:charles lv:/home/charleslv:/bin/bash

[root@ldapclient ~]# id charleslv

uid=10000(charleslv) gid=10000(sudoers) groups=10000(sudoers)

[root@ldapclient ~]# id zhangs

uid=47180(zhangs) gid=10000(sudoers) groups=10000(sudoers)

[root@ldapclient ~]# id bryanz

uid=1000(bryanz) gid=10000(sudoers) groups=10000(sudoers)

[root@ldapclient ~]# id ericli

uid=10001(ericli) gid=10000(sudoers) groups=10000(sudoers)

[root@ldapclient ~]# su - zhangs

Creating directory '/home/zhangs'.

[zhangs@ldapclient ~]$ ll

total 0

[zhangs@ldapclient ~]$ pwd

/home/zhangs

到此,CentOS 6.5配置openldap客户端成功。



本文转自 jerry1111111 51CTO博客,原文链接:http://blog.51cto.com/jerry12356/1851933,如需转载请自行联系原作者

相关文章
|
7月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
782 87
|
5月前
|
存储 Linux Apache
在CentOS上配置SVN至Web目录的自动同步
通过上述配置,每次当SVN仓库中提交新的更改时,`post-commit`钩子将被触发,SVN仓库的内容会自动同步到指定的Web目录,从而实现代码的连续部署。
200 16
|
5月前
|
NoSQL 安全 Linux
设置Redis在CentOS7上的自启动配置
这些步骤总结了在CentOS 7系统上设置Redis服务自启动的过程。这些命令提供了一个直接且明了的方式,确保Redis作为关键组件在系统启动时能自动运行,保障了依赖于Redis服务的应用的稳定性和可用性。
513 9
|
7月前
|
Linux
Centos6配置阿里云yum源报错
在CentOS 6配置阿里云Yum源时,可能出现EPEL仓库访问报错(404 Not Found)。解决方法:编辑`/etc/yum.repos.d/epel.repo`文件,将`enabled`和`gpgcheck`参数设为0 ``` 此设置可解决仓库无法访问的问题。
1742 29
|
7月前
|
Ubuntu 安全 Linux
CentOS与Ubuntu中防火墙配置命令集汇
有了这些,你就能遨游在 CentOS 和 Ubuntu 的海洋中,频繁地改变你的防火墙设置,快速地应对各种安全威胁,同时也能保证你的系统可以正常工作。出发吧,勇敢的编程者,随着这些命令集的涌动,扬帆起航,走向安全的网络世界!
252 5
|
8月前
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
2132 26
|
8月前
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
383 10
|
10月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
381 20
|
4月前
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
930 69