Openldap的使用手记

来源:互联网 发布:知乎手机匿名回答 编辑:程序博客网 时间:2024/06/05 03:51
OpenLDAP介绍
Linux 发行版中提供的 OpenLDAP 软件按照一个客户机/服务器模型实现了轻量级目录访问协议(LDAP)。LDAP 的设计目的是提供一种有效的方法来查找和管理信息。OpenLDAP 软件和包提供了创建目录信息树(一个主要进行读操作的数据库)的工具。本文向您展示如何存储用户的帐号信息,并修改身份验证服务来使用 LDAP 获取所需要的信息。

它主要包括下述4个部分:
slapd - 独立LDAP守护服务
slurpd - 独立的LDAP更新复制守护服务
实现LDAP协议的库

工具软件和示例客户端

和数据库差不多,存储数据用的,只不过LDAP存储的数据是树结构的
SUN的统一认证系统中用的就是LDAP,主要优点是读取,查询快,缺点是数据频繁写入性能差,不适合存储大文本数据字段。

LDAP 信息被组织成属性和值的组合,称为 条目(entry)。条目可能会具有必须的属性或可选属性。一个条目的属性必须要遵循 /etc/openldap/schema/ 模式文件中定义的规则。规则包含在条目的 objectclass 属性中

文件 /etc/openldap/schema/nis.schema 为 posixAccount 对象类中的条目定义了所有的属性和 objectclass。例如,下面是对 uidNumber 属性的描述:

attributetype ( 1.3.6.1.1.1.1.0 NAME 'uidNumber' DESC 'An integer uniquely identifying a user in an administrative domain' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )

所有的属性类型都已经定义了,它们被收集到 posixAccount objectclass 中。例如:

objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' SUP top AUXILIARY DESC 'Abstraction of an account with POSIX attributes' MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) MAY ( userPassword $ loginShell $ gecos $ description ) )

ldapuser 条目具有一个识别名属性 dn,它用作用户名,并与 userPassword 一起用来在 LDAP 目录中记录信息,或与 LDAP 目录绑定在一起使用。



配置slapd配置,它通常位于/etc/openldap/slapd.conf或者
/usr/local/etc/openldap/slapd.conf路徑中(Debian系統預設在/etc/ldap/slapd.conf路徑),
在此配置文件中,应该包含您的域组件,例如:

vim /etc/ldap/slapd.conf;        #如下Debian系統(用apt-get命令)安裝的默認配置;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
pidfile         /var/run/slapd/slapd.pid
argsfile        /var/run/slapd/slapd.args
loglevel        0
modulepath      /usr/lib/ldap
moduleload      back_bdb
sizelimit 500
tool-threads 1
backend         bdb
checkpoint 512 30
database        bdb
suffix          "dc=hung,dc=mooo,dc=com"

rootdn          "cn=admin,dc=hung,dc=mooo,dc=com"
rootpw          {SSHA}lu5jWK06Yvs2Qjye8oTa/YAvaz/6GBmV

directory       "/var/lib/ldap"
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
index           objectClass eq
lastmod         on
access to attrs=userPassword,shadowLastChange
        by dn="cn=admin,dc=hung,dc=mooo,dc=com" write
        by anonymous auth
        by self write
        by * none
access to dn.base="" by * read
access to *
        by dn="cn=admin,dc=hung,dc=mooo,dc=com" write
        by * read
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
請注意: 在默認的配置中原本是注釋了rootdn和缺少rootpw兩個參數的,這里必須啟用或添加;
這個rootdn對于LDAP而言,就像是Linux中的root身份一樣,可以對整個LDAP系統的數據庫資料
做新增,刪除和修改等操作. 例如上述所指定的rootdn: "cn=admin,dc=hung,dc=mooo,dc=com"
就是本LDAP服務器的管理員.

rootpw就是管理員(rootdn)的密碼,可以使用明文密碼,但這不是好習慣,最好還是使用加密過
的字串. 可以使用slappasswd這個專用命令, 來創建后臺數據庫管理員密碼的密文字串,并且
可以指定字串的加密方式, 例如:

slappasswd -h {SSHA};        #可用模式有: CRYPT,MD5,SMD5,SSHA和SHA(SSHA是預設且最強的);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
New password:XXXXXX                                #在這里輸入您想設定的密碼;
Re-enter new password:                                #再重復輸入一次密碼;
{SSHA}lu5jWK06Yvs2Qjye8oTa/YAvaz/6GBmV
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
請注意: 上述最后一行就是密文,須將它粘帖到slqpd.conf配置文件中,當作rootpw的設置值;

slaptest;                #檢驗配置是否正確(如下返回成功信息);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
config file testing succeeded
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

相關配置參數的說明:
include                指定slapd要讀入的附加的配置文件;
pidfile                指定slapd的PID文件;
argsfile        指定slapd的進程執行參數;
database        指定儲存目錄數據的后臺數據庫格式;
suffix                指定查詢的DN后綴,如果匹配此后綴就將被傳遞給后臺數據庫;
rootdn                指定后臺數據庫的管理員用戶帳號;
rootpw                指定后臺數據庫的管理員用戶密碼;
directory        指定后臺數據庫的儲存目錄;
index                指定索引,用來維護給定的屬性;
access to        設定目錄的ACL訪問控制;



關于后臺數據庫的類型:
bdb                Berkeley DB transactional backend;
dnssrv                DNS SRV backend;
ldap                LDAP Proxy backend;
ldbm                Lightweitht DBM backend;
meta                Meta directory backend;
monitor                Monitor backend;
passwd                Provides read-only access to passwd;
perl                Perl programmable backend;
shell                Shell(external program) backend;
sql                SQL programmable backend;

關于ACL訪問控制列表的允許動作:
none                不允許訪問;
auth                僅供驗證用途;
compare                僅容許比較;
search                可供搜索過濾訪問;
read                數據可被查看;
write                數據可被查看,也可被修改;



ls -l /var/lib/ldap/;        #看看數據庫文件;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-rw-r--r-- 1 openldap openldap    4096 2007-11-13 02:37 alock
-rw------- 1 openldap openldap    8192 2007-11-13 02:17 __db.001
-rw------- 1 openldap openldap 2629632 2007-11-13 02:17 __db.002
-rw------- 1 openldap openldap   98304 2007-11-13 02:17 __db.003
-rw------- 1 openldap openldap  565248 2007-11-13 02:17 __db.004
-rw------- 1 openldap openldap   24576 2007-11-13 02:17 __db.005
-rw-r--r-- 1 openldap openldap      96 2007-11-13 02:17 DB_CONFIG
-rw------- 1 openldap openldap    8192 2007-11-13 02:17 dn2id.bdb
-rw------- 1 openldap openldap   32768 2007-11-13 02:17 id2entry.bdb
-rw------- 1 openldap openldap   53979 2007-11-13 02:37 log.0000000001
-rw------- 1 openldap openldap    8192 2007-11-13 02:17 objectClass.bdb
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
請注意: 這個目錄下的數據庫非常重要,必須經常備份;

/usr/sbin/slapd -4 -d10 -f /etc/ldap/slapd.conf;        #以測試模式啟動slapd進程;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@(#) $OpenLDAP: slapd 2.3.30 (Mar  9 2007 05:43:02) $
        root@windlord:/tmp/buildd/openldap2.3-2.3.30/debian/build/servers/slapd
slapd starting
daemon: added 4r listener=(nil)
daemon: added 6r listener=0x8129180
daemon: select: listen=6 active_threads=0 tvp=NULL

daemon: shutdown requested and initiated.
daemon: closing 6
slapd shutdown: waiting for 0 threads to terminate
slapd stopped.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

虽然是LINUX系统对WINDOWS有参考价值。来源:http://blog.chinaunix.net/uid-27497092-id-3544586.html

原创粉丝点击