OpenLDAP 学习笔记

 

OpenLDAP 的安装和配置

 

OpenLDAP 常规部件:

  • ldap 服务器管理套件:软件包名为 openldap-servers 。包含服务程序(slapd、slurpd)及一些服务端管理工具(如:slapadd、slappasswd 等)。配置文件为:/etc/openldap/slapd.conf
  • ldap 客户端支持:软件包名为 openldap 。包含 OpenLDAP 的配置文件、库和 OpenLDAP 文档。配置文件为:/etc/openldap/ldap.conf
  • ldap 客户端目录管理套件:软件包名为 openldap-clients 。包含访问和修改 OpenLDAP
    目录所需的客户程序(如:ldapsearch、ldapadd 、ldappasswd等)。推荐使用基于Web的GUI管理工具 phpLDAPadmin 。但基本的这些命令还是需要了解的。
  • nss_ldap 统一认证模块:LDAP 的 NSS 库和 PAM 模块(pam_ldap.so),提供系统命名服务和身份验证服务。
    • nss_ldap 是一组 C 库扩展,它允许 LDAP 目录服务器用作一个用户和组信息的主源
    • pam_ldap 是一个 Linux-PAM 模块,它支持身份验证功能。pam_ldap为很多应用系统(如系统登录、vsftpd FTP服务器)提供LDAP统一认证和密码更新等服务。

 

OpenLDAP 依赖的一些软件:

  • 后端数据库:Oracle Berkeley DB
  • 安全协议:openssl  (可选,让LDAP使用TLS安全传输)
  • 时间服务器:ntp(可选)

 

软件安装

使用 yum install 命令分别安装上面提到的三个软件包。

 

服务器配置(slapd.conf)

修改/etc/openldap/slapd.conf,主要修改项如下:

  • 包含要用到的 schema 语法文件(include )。include 文件定义了条目所属的类(objectClasses)和条目要用到的属性(attribute)
  • 设置目录的访问控制列表(ACL)(access to … by …):即指定目录对象(如属性)可由哪些用户怎样访问。如密码只供认证不可查看。
  • 定义目录的搜索域后缀(suffix),如:"dc=bt,dc=cn"。目录结构有三种形式,参见本文后一节内容。
  • 指定目录的管理员帐号和密码(rootdn、rootpw),如:"cn= Manager,dc=bt,dc=com"
  • 定义一些索引对象,以加快查询(index)

 

后端数据库配置(DB_CONFIG)

建立DB_CONFIG文件到/var/lib/ldap/目录下, 其实/etc/openldap/目录中存在DB_CONFIG.example,复制到/var/lib/ldap/目录下就可以,否则在启动ldap时会出现警告错误提示。

 

客户端配置(ldap.conf)

配置目标LDAP服务器的一些属性,以方便所有的客户端程序共享使用。配置项主要有:

  • BASE:指定LDAP目录数据库的根域,如:dc=bt,dc=com
  • URI:指定LDAP服务器的访问地址,如:ldap://ldap.bt.com

 

启动LDAP服务器

启动命令:# service ldap start

设置开机启动(运行级别):ntsysv

测试LDAP服务器:# ldapsearch –x

 

 

OpenLDAP 目录管理

 

安装和配置好后,启动服务,slapd 自动在“/var/lib/ldap/”目录下创建了一个BDB数据库,但此时数据库是空的,即没有任务目录信息(连根DN“dc=bt,dc=com”都不存在)。

服务器正常运作后,就可以录入信息了。目录信息的管理(录入)方法有以下几种:

  • 命令行录入。借助openldap-clients提供的几个管理程序(ldapadd),手工录入。
  • LDIF文件导入。这些.ldap文件可以是从其它目录库中导出的,也可以是预先输入的文件。因为ldif格式是文本格式,很方便查阅和修改。
  • GUI管理工具。这些工具跟openldap-clients是同一级别的,即把它图形化了。已经有很多图形界面的目录管理工具,常用的有:
    • phpLDAPadmin :Web 客户端
    • LDAPAdmin :Windows 客户端
    • Softerra LDAP Administrator:Windows 客户端
    • Ldap Browser/Editor
    • Apache Directory Studio
    • jXplorer

根目录的属性一般是(可以把下面的代码保存为ldif文件,然后导入):

dn: dc=bt,dc=cn
objectClass: dcObject
objectClass: organization
o: Corporation
dc: bt
description: Bintree Corp.

 

OpenLDAP 统一认证

nss_ldap 提供了一个PAM模块“pam_ldap.so”,用于为各应用系统提供统一的LDAP认证模块。pam_ldap 在Linux 中是一个很基础的认证模块。pam_ldap 的配置文件为“/etc/ldap.conf”,可以配置pam_ldap.so作为LDAP的客户端连接LDAP服务器的各个参数。请参考《pam_ldap 详细配置》。

关于各应用系统如何使用LDAP进行认证,请参考PAM的相关介绍。各应用系统的PAM配置文件统一存放在“/etc/pam.d”中。

 

LDAP 和 Linux 系统帐号对应关系

自從 Sun 推出了 Sun Yellow Pages (就是現在在 Unix/Linux 常聽到的 Network Information Service,NIS) 之後,Unix/Linux 的帳號管理就有了完整的統一方案,在此,我在這裡介紹如何使用 LDAP 統一帳帳號密碼的管理。

LDAP 裡,只要引入 nis.schema 就可以使用和 Linux 登入相關的 attribute。

/etc/passwd、/etc/shadow 和 /etc/group

大家都知道,/etc/passwd 是存放個人的帳號資料,而 /etc/shadow 是存放著個人的密碼資訊,而 /etc/passwd 格式應該像下面這樣:

steven:x:500:500::/home/steven:/bin/bash

也就是:

id:password:uid:gid:full_name:Home Directory:Login shell

這樣的格式,然而,在 Linux login 時,對於 LDAP 也要引用相關的 atrribute 才可以正確對應登入,下表為 posix /etc/passwd 和 LDAP 的對應:

/etc/passwd objectClass: posixAccount
id uid
password userPassword
uid uidNumber
gid gidNumber
full_name gecos
Home Directory homeDirectory
Login shell loginShell

上表可以很清楚的看到,若是要讓設計 ldif 檔的話,最少需要引用 posixAccount 這個 objectClass,並且設定必要的 attribute。

介紹完了 /etc/passwd 之後,另一個很重要的檔案,也就是記錄整個 Linux 主機的 user password 的檔案就是 /etc/shadow 這個檔,那麼他的格式是:

steven:$1$xGQPf1Cs$Y/kQw5TmUXvWY/1z3QgNZ/:13001:0:99999:7:::

他們的意義依序為:

username:passwd:last:may:must:warn:expire:disable:reserved

好的,那麼和剛剛一樣,我來解釋一下要引用的 objectclass 和 attribute 對應:

/etc/shadow objectClass: shadowAccount
username id
password userPassword
last shadowLastChange
may shadowMin
must shadowMax
warn shadowWarning
expire shadowExpire
disable shadowInactive
reserved shadowFlag

上面也可以得知,在設計 ldif 時,除了要引用剛剛的 posixAccount,還有 shadowAccount 才行。

介紹完了兩個重要的 passwd 和 shadow 檔之後,再來就是群組檔 (/etc/group) 的問題啦!一樣的,也有對應的 attribute,但我還是先列出格式出來:

steven:x:500:

也就是:

group name:password:group id:other account

下面是 objectclass 和 attribute 的對應:

/etc/group objectClass: posixGroup
group name cn
password userPassword
group id gidNumber
other account memberUid

你可能感兴趣的:(数据库,linux,服务器,FTP服务器,login,BT)