1

http://www.cnblogs.com/xwdreamer/p/3469951.html
https://www.digitalocean.com/community/tutorials/how-to-install-and-co...
https://www.digitalocean.com/community/tutorials/how-to-authenticate-c...

LDAP (Lightweight Directory Access Protocol) 是一个集中用户管理系统。试想,当企业中搭建了多个服务比如redmine和gitlab,每个都需要重新开一个账号是非常麻烦的,也不利于管理。LDAP为用户管理提供了统一的接口,它的后端相当于一个数据库,当是以目录树和文件的形式存放的,这样它不需依赖任何数据库。

server

sudo apt-get install slapd ldap-utils

这一步装好之后会让你填写一些信息,然而是不完全的,你需要reconfigure它

sudo dpkg-reconfigure slapd

你将会填入以下一系列信息

  • Omit OpenLDAP server configuration? No
  • DNS domain name?

    • 这将会创建基本的目录树结构
    • 理论上是可以随便填的,如果你有域名可以用域名
    • 这里使用 chenjr.cc
  • Organization name? 也是随便填,这里使用 zju
  • Administrator password?
  • Database backend to use? HDB
  • Remove the database when slapd is purged? No
  • Move old database? Yes
  • Allow LDAPv2 protocol? No (现在基本都用v3版本了)

到这里就安装好了,接下来可以验证一下

ldapsearch -x -LLL -H ldap:/// -b dc=chenjr,dc=cc dn

输出应该有两个,一个是根目录,一个是reconfigure过程中创建的admin

dn: dc=chenjr,dc=cc

dn: cn=admin,dc=chenjr,dc=cc

由于LDAP命令行工具的语法太复杂,使用客户端软件查看管理LDAP服务器是不错的选择。digitalocean的教程里用的是PHPldapadmin,但还要装php太麻烦。我推荐一个LDAPAdmin,挺老的软件但还挺好用。用客户端就能进行用户管理了。

client

client的作用是让你的LDAP服务器上存在的用户帐号可以像一个真正的linux用户登录到服务器。但这也需要配置一下。

sudo apt-get install libpam-ldap nscd

安装后仍然要填写一些信息

  • LDAP server Uniform Resource Identifier

    • 因为我用的同一台机器,所以我填的是 ldap://127.0.0.1:389,端口号选填
    • 特别注意把它默认的ldapi:///换成ldap://
  • Distinguished name of the search base

    • 就是你目录树的根,比如我的是 dc=chenjr,dc=cc
  • LDAP version to use: 3
  • Make local root Database admin: Yes
  • Does the LDAP database require login? No
  • LDAP account for root:

    • 这个是装LDAP服务器时的创建的那个admin账号
    • 我这里是 cn=admin,dc=chenjr,dc=cc
  • LDAP root account password

还需要编辑一些文件,首先是/etc/nsswitch.conf,它使得我们在linux下改变用户密码等属性的时候会反映到LDAP中。在以下三行中的compat前面都加上ldap。

passwd: ldap compat
group:  ldap compat
shadow: ldap compat

然后需要更改PAM的配置,编辑/etc/pam.d/common-session,在末尾加上一行,这使得用户第一次登录的时候创建主目录

session required    pam_mkhomedir.so skel=/etc/skel umask=0022

然后,编辑/etc/pam.d/common-password,将以下这行中的use_authtok删掉,这是避免使用passwd命令时报错而无法更改密码

password    [success=1 user_unknown=ignore default=die] pam_ldap.so use_authtok try_first_pass

然后重启nscd服务

sudo /etc/init.d/nscd restart

大功告成!


wangdai
1k 声望18 粉丝

引用和评论

0 条评论