工具软件和示例客户端
和数据库差不多,存储数据用的,只不过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