บทความนี้ขอปรับปรุงเนื้อหาการติดตั้ง OpenLDAP Server เพื่อติดตั้งบน Fedora 10 ที่ ติดตั้ง Fedora 10 แบบประหยัดพื้นที่สุด และเตรียมความพร้อมคอนฟิกบางส่วของเซิร์ฟเวอร์สำหรับติดตั้ง Samba และคอนฟิกเป็น Domain Controller ต่อไป
จากการติดตั้งแบบประหยัดพื้นที่สุดจะมี openldap ที่เป็นเฉพาะในส่วน library ที่จำเป็นในการใช้งานเท่านั้น สามารถตรวจสอบ package openldap ได้โดยใช้คำสั่ง rpm
[root@fc10-pdc ~]# rpm -qa | grep openldap openldap-2.4.12-1.fc10.x86_64
เพื่อจะทำหน้าที่เป็น OpenLDAP Server จำเป็นต้องลง package เพิ่มเติม ไฟล์ rpm สองไฟล์มีอยู่ในแผ่น DVD ติดตั้งแล้ว สามารถ mount แล้วติดตั้งได้เลย
[root@fc10-pdc ~]# mount /dev/scd0 /media/ mount: block device /dev/sr0 is write-protected, mounting read-only
[root@fc10-pdc ~]# rpm -i /media/package/openldap-clients-2.4.12-1.fc10.x86_64.rpm [root@fc10-pdc ~]# rpm -i /media/package/libtool-ltdl-1.5.26-4.fc10.x86_64.rpm
[root@fc10-pdc ~]# umount /media/
อีก package หนึ่ง ที่จำเป็นคือ openldap-servers ต้องดาวน์โหลดมาจาก Fedora 10 Everything ไฟล์ชื่อ openldap-servers-2.4.12-1.fc10.x86_64.rpm
ใช้คำสั่ง rpm เพื่อติดตั้ง openldap-servers
จะมีข้อความขึ้นบนหน้าจอ ซึ่งเป็นการสร้างคีย์ต่างๆ เพื่อความปลอดภัยของข้อมูล
[root@fc10-pdc ~]# rpm -i openldap-servers-2.4.12-1.fc10.x86_64.rpm /etc/pki/tls/certs / umask 77 ; \ PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \ PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \ /usr/bin/openssl req -utf8 -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ; \ cat $PEM1 > slapd.pem ; \ echo "" >> slapd.pem ; \ cat $PEM2 >> slapd.pem ; \ rm -f $PEM1 $PEM2 Generating a 1024 bit RSA private key ..................++++++ ....................++++++ writing new private key to '/tmp/openssl.QqH8Pr' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [GB]:State or Province Name (full name) [Berkshire]:Locality Name (eg, city) [Newbury]:Organization Name (eg, company) [My Company Ltd]:Organizational Unit Name (eg, section) []:Common Name (eg, your name or your server's hostname) []:Email Address []:/
หลังจากติดตั้งแล้ว สามารถตรวจสอบเวอร์ชั่นของไฟล์ rpm ที่ติดตั้งได้ ดังนี้
[root@fc10-pdc ~]# rpm -qa | grep openldap openldap-2.4.12-1.fc10.x86_64 openldap-clients-2.4.12-1.fc10.x86_64 openldap-servers-2.4.12-1.fc10.x86_64
แก้ไขคอนฟิกไฟล์ /etc/openldap/slapd.conf
ก่อนที่จะเริ่มแก้ไขไฟล์คอนฟิก ต้องรันคำสั่ง spappasswd เพื่อเข้ารหัส Root PW แล้วนำผลลัพธ์ที่ได้ไปใส่ไว้ส่วนของคอนฟิก rootpw ในไฟล์ slapd.conf โดยรหัสนี้จะใช้เมื่อต้องการแก้ไขข้อมูลที่อยู่ใน LDAP เช่นเพิ่ม แก้ไข ลบ ข้อมูล
ตัวอย่างการรันคำสั่ง spappasswd
[root@fc10-pdc ~]# slappasswd
New password:
Re-enter new password:
{SSHA}fFeU/EgRu6B9dbg7dlo4sxcUu19IMWJ2
ไฟล์คอนฟิกหลักของ OpenLDAP Server คือไฟล์ /etc/openldap/slapd.conf ในเบื้องต้นจะต้องมีการแก้ไขบางส่วนก่อนที่จะเริ่มใช้งานได้ ในที่นี้จะสมมติข้อมูลเบื้องต้นสำหรับการคอนฟิก OpenLDAP Server เป็นดังนี้ โดยแสดงเฉพาะส่วนที่เพิ่มเติมเท่านั้น
[root@fc10-pdc ~]# cat /etc/openldap/slapd.conf
...
include /etc/openldap/schema/samba.schema
...
database bdb
suffix "dc=fc10-ldap,dc=com"
rootdn "uid=root,ou=People,dc=fc10-ldap,dc=com"
rootpw {SSHA}fFeU/EgRu6B9dbg7dlo4sxcUu19IMWJ2
...
รันเซอร์วิส ldap
ใช้คำสั่ง service start เพื่อรันเซอร์วิส openldap
[root@fc10-pdc ~]# service ldap start Starting slapd: [ OK ]
ตรวจสอบ process ที่รัน
[root@fc10-pdc ~]# ps -ef | grep ldap ldap 3064 1 0 17:13 ? 00:00:00 /usr/sbin/slapd -h ldap:/// -u ldap
ถึงจุดนี้ OpenLDAP Server สามารถใช้งานได้แล้ว แต่ที่จริงต้องมีไฟล์คอนฟิกเพิ่มเติม เพื่อเพิ่มประสิทธิภาพในการค้นหาข้อมูลใน LDAP
ทดสอบโดยใช้คำสั่ง service stop เพื่อปิดเซอร์วิส openldap และใช้คำสั่ง service start อีกครั้ง จะมีข้อความฟ้องเตือนเรื่องเกี่ยวกับ performance
[root@fc10-pdc ~]# service ldap stop Stopping slapd: [ OK ]
[root@fc10-pdc ~]# service ldap start
Checking configuration files for slapd: [WARNING]
bdb_db_open: warning - no DB_CONFIG file found in directory /var/lib/ldap: (2).
Expect poor performance for suffix "dc=fc10-ldap,dc=com".
config file testing succeeded
Starting slapd: [ OK ]
ตรวจสอบไฟล์ที่อยู่ใน /var/lib/ldap/
[root@fc10-pdc ~]# cd /var/lib/ldap/ [root@fc10-pdc ldap]# ls -l total 964 -rw-r--r-- 1 ldap ldap 2048 2009-05-15 17:14 alock -rw------- 1 ldap ldap 24576 2009-05-15 17:13 __db.001 -rw------- 1 ldap ldap 188416 2009-05-15 17:13 __db.002 -rw------- 1 ldap ldap 270336 2009-05-15 17:13 __db.003 -rw------- 1 ldap ldap 98304 2009-05-15 17:13 __db.004 -rw------- 1 ldap ldap 729088 2009-05-15 17:13 __db.005 -rw------- 1 ldap ldap 32768 2009-05-15 17:13 __db.006 -rw------- 1 ldap ldap 8192 2009-05-15 17:13 dn2id.bdb -rw------- 1 ldap ldap 32768 2009-05-15 17:13 id2entry.bdb -rw------- 1 ldap ldap 10485760 2009-05-15 17:14 log.0000000001
ถึงแม้จะใช้งาน OpenLDAP Server ได้ แต่แนะนำให้ copy ไฟล์ DB_CONFIG มาใส่ไว้ใน /var/lib/ldap/ ด้วย ซึ่งมีตัวอย่างไฟล์อยู่แล้วใน /usr/share/doc/openldap-servers-2.4.12/
ใช้คำสั่ง service stop เพื่อปิดเซอร์วิส openldap ก่อน copy ไฟล์
[root@fc10-pdc ldap]# service ldap stop Stopping slapd: [ OK ]
copy ไฟล์ DB_CONFIG.sample และเปลี่ยนชื่อไฟล์เป็น DB_CONFIG พร้อมเปลี่ยน owner, group, permission ของไฟล์ด้วย
[root@fc10-pdc ldap]# cp /usr/share/doc/openldap-servers-2.4.12/DB_CONFIG.example DB_CONFIG [root@fc10-pdc ldap]# chown ldap.ldap DB_CONFIG [root@fc10-pdc ldap]# chmod 600 DB_CONFIG
ใช้คำสั่ง service start เพื่อรันเซอร์วิส openldap อีกครั้ง ก็ยังมีข้อความฟ้องเตือนอีก เพราะมีการสร้างไฟล์ index ใหม่
[root@fc10-pdc ldap]# service ldap start
Checking configuration files for slapd: [WARNING]
bdb_db_open: DB_CONFIG for suffix "dc=fc10-ldap,dc=com" has changed.
Performing database recovery to activate new settings.
bdb_db_open: database "dc=fc10-ldap,dc=com": recovery skipped in read-only mode. Run manual recovery if errors are encountered.
config file testing succeeded
Starting slapd: [ OK ]
วิธีการแก้ไขคือ stop แล้ว start ใหม่อีกครั้ง ข้อความคำเตือนก็จะหายไป
[root@fc10-pdc ldap]# service ldap stop Stopping slapd: [ OK ]
[root@fc10-pdc ldap]# service ldap start Starting slapd: [ OK ]
ตรวจสอบไฟล์ที่อยู่ใน /var/lib/ldap/ จะมีไฟล์ index ขึ้นมาเพิ่มอีกหลายไฟล์ เพื่อทำให้การค้นหาข้อมูลใน LDAP ได้เร็วขึ้น
[root@fc10-pdc ldap]# ls -l total 22132 -rw-r--r-- 1 ldap ldap 2048 2009-05-16 00:09 alock -rw------- 1 ldap ldap 16384 2009-05-15 18:55 cn.bdb -rw------- 1 ldap ldap 24576 2009-05-15 17:15 __db.001 -rw------- 1 ldap ldap 9093120 2009-05-15 17:15 __db.002 -rw------- 1 ldap ldap 335552512 2009-05-15 17:15 __db.003 -rw------- 1 ldap ldap 2359296 2009-05-15 17:15 __db.004 -rw------- 1 ldap ldap 729088 2009-05-15 17:15 __db.005 -rw------- 1 ldap ldap 32768 2009-05-15 17:15 __db.006 -rw------- 1 ldap ldap 921 2009-05-15 17:15 DB_CONFIG -rw------- 1 ldap ldap 8192 2009-05-15 18:55 dn2id.bdb -rw------- 1 ldap ldap 8192 2009-05-15 18:55 gidNumber.bdb -rw------- 1 ldap ldap 8192 2009-05-15 17:45 givenName.bdb -rw------- 1 ldap ldap 65536 2009-05-15 18:55 id2entry.bdb -rw------- 1 ldap ldap 10485760 2009-05-16 00:09 log.0000000001 -rw------- 1 ldap ldap 8192 2009-05-15 18:55 loginShell.bdb -rw------- 1 ldap ldap 8192 2009-05-15 17:30 memberUid.bdb -rw------- 1 ldap ldap 8192 2009-05-15 18:55 objectClass.bdb -rw------- 1 ldap ldap 8192 2009-05-15 17:30 ou.bdb -rw------- 1 ldap ldap 8192 2009-05-15 17:45 sn.bdb -rw------- 1 ldap ldap 8192 2009-05-15 18:55 uid.bdb -rw------- 1 ldap ldap 8192 2009-05-15 18:55 uidNumber.bdb