背景:公司已经有了openldap的client+server系统,我需要对系统进行备份。保证可用性。

系统环境:ubuntu 12.04

安装准备:berkeley-db 和openldap 版本一定要匹配或者都用最新版本,否则安装openldap的时候会出现很多麻烦问题。本文采用的是老版本。berkeley-db:4.7.25(已安装系统上查看版本方法cat /usr/local/BerkeleyDB安装目录/include/db.h |grep "DB_VERSION_STRING") openldap:2.4.40 (已安装系统上查看版本方法/usr/local/libexec/slapd -V)

以上文件对应版本下载链接:

http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz

ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.40.tgz

server安装过程:

mkdir /usr/local/openldap_install
cd /usr/local/openldap_install
wget http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz
wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.40.tgz
tar -zxvf db-4.7.25.tar.gz
cd db-4.7.25/
cd build_unix/
../dist/configure
make  -j9
make  install

安装BerkeleyDB安装后需要将对应so文件加入系统环境,否则无法安装openldap

找到BerkeleyDB安装目录的对应lib目录,并将该路径添加到/etc/ld.so.conf
echo "/usr/local/BerkeleyDB.4.7/lib" >>/etc/ld.so.conf
ldconfig -v  #将BerkeleyDB的so文件加载到系统环境中。
然后安装openldap
cd /usr/local/openldap_install
tar -zxvf openldap-2.4.40.tgz
#以下注意命令中BerkeleyDB的安装路径
./configure  CPPFLAGS="-I/usr/local/BerkeleyDB.4.7/include -D_GNU_SOURCE" LDFLAGS="-L/usr/local/BerkeleyDB.4.7/lib"
make depend
make -j9
make install

说明,默认安装后服务端全部安装在了/usr/local/目录下。

/usr/local/BerkeleyDB.4.7 BerkeleyDB目录

/usr/local/etc/openldap openldap 安装目录

/usr/local/libexec openldap 的slapd 二进制执行文件目录

/usr/local/var/openldap-data openldap的数据库目录

启动服务前,修改/usr/local/etc/openldap/slapd.conf配置

include         /usr/local/etc/openldap/schema/corba.schema
include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/duaconf.schema
include         /usr/local/etc/openldap/schema/dyngroup.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/misc.schema
include         /usr/local/etc/openldap/schema/openldap.schema
include         /usr/local/etc/openldap/schema/nis.schema
include         /usr/local/etc/openldap/schema/java.schema
include         /usr/local/etc/openldap/schema/ppolicy.schema
include         /usr/local/etc/openldap/schema/pmi.schema
include         /usr/local/etc/openldap/schema/collective.schema

pidfile         /usr/local/var/run/slapd.pid
argsfile        /usr/local/var/run/slapd.args

#此处内容还需进一步确认功能作用,此次用不到。
TLSCACertificateFile  /usr/local/etc/certs/cacert.pem
TLSCertificateFile    /usr/local/etc/certs/new-server.crt
TLSCertificateKeyFile /usr/local/etc/certs/new-server.key
TLsverifyClient never

access to attrs=shadowLastChange,userPassword
      by self write
      by * auth
access to *
      by self write
      by * read

database config
access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
        by * none

database monitor
access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=auth" read
        by dn.exact="cn=Manager,dc=my-domain,dc=com" read
        by * none
############
database        bdb
suffix          "dc=bokecc,dc=com"
checkpoint      1024 15
rootdn          "cn=root,dc=com"

rootpw          secret

directory       /usr/local/var/openldap-data

index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,sub
index nisMapName,nisMapEntry            eq,sub

loglevel 256
logfile /usr/local/var/slapd.log

服务端启动方法:

/usr/local/libexec/slapd -h ldap://1.1.1.1 -f /usr/local/etc/openldap/slapd.conf

启动后,没有问题。后续将通过

client安装过程:

client和server安装在同一台服务器上。

二、安装配置方式:

1.apt安装
apt-get install ldap-utils libpam-ldap libnss-ldap nslcd
安装过程中提示填写ldap相关信息:ldap server 地址,base dc等.信息保存在/etc/ldap.conf中,可通过dpkg-reconfigure ldap-auth-config重新配置,其中: 
ldap服务uri格式 ldap://ldapServerIP/
search base:dc=my,dc=com,dc=com
root ldap account:cn=admin,dc=my,dc=cn      Make local root Database admin:    no
2.修改nsswitch.conf文件
/etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldap

#hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

3.认证方式中添加ldap:
auth-client-config -t nss -p lac_ldap
直接执行以上命令即可 

4.认证通过后自动创建用户家目录: 
/etc/pam.d/common-session,追加内容:  
session required pam_mkhomedir.so skel=/etc/skel umask=0022

5.配置开启ldap认证方式
pam-auth-update

6.可在本机通过passwd更改用户密码(可选)
/etc/pam.d/common-password,除去其中的use_authtok参数

7.重启相关服务
update-rc.d nslcd enable
/etc/init.d/nslcd restart

参见http://askubuntu.com/questions/127389/how-to-configure-ubuntu-as-an-ldap-client

二、脚本配置方式(出处:http://blog.csdn.net/qk1992919/article/details/51262424)

待修改:

如果需配置的机器很多,采用手工配置方式不太合适,可在待配置机器上运行如下shell脚本进行自动化配置: 
C代码  
#!/bin/bash  
  
#--------------------------------------------------------------------------------  
  
#Ldap server地址及base DN  
LDAP_SERVER_IP=192.168.1.100  
BASE_DN='dc=my,dc=cn'  
  
#--------------------------------------------------------------------------------  
  
#创建preseed文件-软件安装自应答  
touch debconf-ldap-preseed.txt  
echo "ldap-auth-config    ldap-auth-config/ldapns/ldap-server    string    ldap://$LDAP_SERVER_IP" >> debconf-ldap-preseed.txt  
echo "ldap-auth-config    ldap-auth-config/ldapns/base-dn    string    $BASE_DN" >> debconf-ldap-preseed.txt  
echo "ldap-auth-config    ldap-auth-config/ldapns/ldap_version    select    3" >> debconf-ldap-preseed.txt  
echo "ldap-auth-config    ldap-auth-config/dbrootlogin    boolean    false" >> debconf-ldap-preseed.txt  
echo "ldap-auth-config    ldap-auth-config/dblogin    boolean    false" >> debconf-ldap-preseed.txt  
echo "nslcd   nslcd/ldap-uris string  ldap://$LDAP_SERVER_IP" >> debconf-ldap-preseed.txt  
echo "nslcd   nslcd/ldap-base string  $BASE_DN" >> debconf-ldap-preseed.txt  
  
cat debconf-ldap-preseed.txt | debconf-set-selections  
  
#安装ldap client相关软件  
apt-get install -y ldap-utils libpam-ldap libnss-ldap nslcd  
  
#认证方式中添加ldap  
auth-client-config -t nss -p lac_ldap  
  
#认证登录后自动创建用户家目录  
echo "session required pam_mkhomedir.so skel=/etc/skel umask=0022" >> /etc/pam.d/common-session  
  
#自启动服务  
update-rc.d nslcd enable  
  
#可以在Host上通过passwd更改用户密码  
cp /etc/pam.d/common-password /etc/pam.d/common-password.bak  
sed -i 's/use_authtok//' /etc/pam.d/common-password  
  
#使配置生效  
/etc/init.d/nslcd restart



另一个情况:

openldap server端 ubuntu 12.04

创建的自签名证书。 只开启636公网端口,389监听内网。客户端通过ldaps://方式连接636端口。

TLSCACertificateFile /etc/ldap/tls/cacert.pem
TLSCertificateFile /etc/ldap/tls/new-server.crt
TLSCertificateKeyFile /etc/ldap/tls/new-server.key
TLsverifyClient never #不校验客户端证书


客户端开启验证服务端证书。总是不成功。

服务端提示:

Jun 2 19:21:01 oldog slapd[1003]: conn=15447 fd=19 ACCEPT from IP=139.219.68.2:37734 (IP=serverIP:636)
Jun 2 19:21:01 oldog slapd[1003]: conn=15447 fd=19 closed (TLS negotiation failure)
Jun 2 19:21:01 oldog slapd[1003]: conn=15448 fd=19 ACCEPT from IP=139.219.68.2:37736 (IP=serverIP:636)
Jun 2 19:21:01 oldog slapd[1003]: conn=15448 fd=19 closed (TLS negotiation failure)

客户端情况:

ubuntu14.04

apt-get install ldap-utils libpam-ldap libnss-ldap nslcd nscd

安装完后检查/etc/ldap.conf ( /etc/ldap/ldap.conf/etc/nslcd.conf 这两个文件为互补文件) /etc/nsswitch.conf

/etc/ldap.conf

添加binddnuid=check,dc=bokecc,dc=com

bindpw 1234567

pam_groupdn cn=pssh,dc=com

pam_member_attributememberUid

pam_password clear # 由md5改成clear

最后加上

nss_initgroups_ignoreusers,backup,bin,daemon,games,gnats,irc,landscape,libuuid,list,lp,man,messagebus,news,nslcd,proxy,root,sshd,sync,sys,syslog,uucp,www-data


修改/etc/ldap/ldap.conf

TLS_CACERT /etc/ssl/certs/ca-certificates.crt 修改后边自签名证书路径/usr/local/etc/certs/cacert.pem

如果在上边安装过程中,有一个问是否需要验证tls 选择demand。才能进行tls验证。 最终影响/etc/nslcd.conf中增加这个配置:tls_reqcert demand

命令:auth-client-config -t nss -p lac_ldap 修改/etc/nsswitch.conf 让本地的passwd group shadow 添加ldap用户。

/etc/pam.d/common-session 新增:session required pam_mkhomedir.so skel=/etc/skel umask=0022 保证新增路用户自动创建用户目录 还可以通过pam-auth-update 在选项中开启。

pam-auth-update 可以控制用户登录验证的模块。

在/etc/pam.d/common-account 增加 :

account sufficient pam_ldap.so
account required pam_unix.so

/etc/init.d/nslcd restart 出现如下错误:
/usr/sbin/nslcd: /usr/local/lib/liblber-2.4.so.2: no version information available (required by /usr/sbin/nslcd)
/usr/sbin/nslcd: /usr/local/lib/libldap_r-2.4.so.2: no version information available (required by /usr/sbin/nslcd)

sudo ln -fs /usr/local/lib/liblber-2.4.so.2 /usr/local/lib/

sudo ln -fs /usr/local/lib/libldap_r-2.4.so.2 /usr/local/lib/





ubuntu16.04

apt-get install ldap-utils libpam-ldap libnss-ldap nslcd nscd

安装后:检查/etc/ldap.conf /etc/nslcd.conf /etc/nsswitch.conf

/etc/ldap/ldap.conf没有了。所有配置全部集中到了/etc/nslcd.conf

修改/etc/nslcd.conf 自签名证书路径。

修改 /etc/ldap.conf

binddn uid=check,dc=com

bindpw 1234567

pam_groupdn cn=pssh,dc=com

pam_member_attribute memberUid

pam_password clear 改 md5为clear

ssl on

tls_checkpeer yes

tls_cacertfile /usr/local/etc/certs/cacert.pem

最后添加:

nss_initgroups_ignoreusers,backup,www-data

命令:auth-client-config -t nss -p lac_ldap 修改/etc/nsswitch.conf 让本地的passwd group shadow 添加ldap用户。

/etc/pam.d/common-session 新增:session required pam_mkhomedir.so skel=/etc/skel umask=0022 保证新增路用户自动创建用户目录 还可以通过pam-auth-update 在选项中开启。

pam-auth-update 可以控制用户登录验证的模块。

在/etc/pam.d/common-account 增加 :

account sufficient pam_ldap.so

account required pam_unix.so


/etc/init.d/nslcd restart 出现如下错误:
/usr/sbin/nslcd: /usr/local/lib/liblber-2.4.so.2: no version information available (required by /usr/sbin/nslcd)
/usr/sbin/nslcd: /usr/local/lib/libldap_r-2.4.so.2: no version information available (required by /usr/sbin/nslcd)

sudo ln -fs /usr/local/lib/liblber-2.4.so.2 /usr/local/lib/

sudo ln -fs /usr/local/lib/libldap_r-2.4.so.2 /usr/local/lib/



dpkg --purge ldap-auth-client ldap-auth-config ldap-utils libnss-ldap libpam-ldap nslcd-utils nslcd nscdapt-get install ldap-utils libpam-ldap libnss-ldap nslcd nscd

ubuntu 12.04 安装openldap不开启加密验证的更多相关文章

  1. ios中的.dylib和.a lib有什么区别?

    我知道Objectivec中的编译和运行时是什么,但是我想知道是什么画了这两个库之间的界限?他们的目的是什么,除了陈述一个是静态的而另一个是动态的?我们何时需要一个而不是另一个?

  2. xamarin.ios – ShareKit与MonoTouch如何?

    有人可以验证ShareKit实际上是否可用于MonoTouch并指导我完成使其工作所需的步骤?解决方法您首先从getsharekit.com下载还是使用ShareKit2.0?

  3. ios – iPhone崩溃日志不能正确地符号化并且是双重间隔的

    任何建议超过欢迎.谢谢.解决方法当这件事发生在我身上时,它只是我通过电子邮件收到的日志.如果我记得,至少有一些是在.msg文件中,我不得不把它们拿出来.它可能是Exchange编码更改.如果你显示不可见的字符,你可能会看到每个字符之间的东西.您可以找到并替换它们以删除它们或更改编辑器中的编码.

  4. ios – Xcode 7 beta 2:LaunchScreen.storyboard无法打开文档

    我在两个不同的Mac(iMac和MacBookpro)上收到这个错误.不知道为什么人们不能再现它,但我需要一些帮助.在运行XX优胜美地10.10.4的Mac上运行Xcode7beta2(15六月’15).甚至无法编译和运行我的项目..我从创建菜单创建了一个视图应用程序项目,就是这样.编辑:我试图删除并重新添加storyboard文件(也可以打开Main.storyboard插件),我仍然得到相同的

  5. iOS – 友好的NSDate格式

    我需要在我的应用程序中显示帖子的日期给用户,现在我用这种格式:“5月25日星期五”.如何格式化NSDate以阅读“2小时前”的内容?使其更加用户友好.解决方法NSDateFormatter不能做这样的事情;你将需要建立自己的规则.我想像:所以这是打印’x分钟前’或’x小时前’从日期起24小时,通常是一天.

  6. ios – 为具有多个目标和不同平台的项目编写Podfile

    如何让CocoaPods成功整合到我的项目和iOS/Mac目标?我已经阅读了Podfile文档,但发现它在这方面缺乏.解决方法得到它了!从我的每个目标和运行的pod安装中删除libPods-xxxx.a文件,再次执行了我的目标集成.

  7. ios – Swift Realm新手:一个简单的Realm对象及其初始化器的问题

    几周前我一直是Objective-C的开发人员,并且听说过Realm.另一方面,我一直希望一点一点地迁移到Swift,所以我创建了一个涉及RealmSwift的小项目.这是什么意思?如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  8. iOS中的CocoaPods是什么?

    任何人都可以详细说明iOS开发中的CocoaPods.我似乎无法理解它们是什么.提前致谢.解决方法CocoaPods是我在最近的iOS应用程序开发中发现的最好的东西之一.我用它来获取最新的Github开源项目作为框架和lib到我的项目中.最好的部分是它将自动管理依赖lib,因此无需拖放文件并下载文件夹blaablaaa只需一个简单的代码’podinstall即可!

  9. 记一次云计算测试实验-openstack-icehouse-安装swift

    -----------------------controller:---------------------------------sourceadmin-openrc.shkeystoneuser-create--name=swift--pass=000000--email=swift@localhostkeystoneuser-role-add--user=swift--tenant=ser

  10. Swift 2/iOS 9 – libz.dylib找不到

    我在我的新的Swift2.0项目中使用一些来自google的外部代码,在早期版本中需要“libz.dylib”。更新到新的XCode/新的SDK后。

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部