จากครั้งก่อนได้กล่าวถึง การติดตั้งและคอนฟิก Fedora Directory Server เบื้องต้น ซึ่งเป็น LDAP Server ที่พัฒนาจากทีมงานของ Fedora ในบทความนี้จะกล่าวถึงอีกทางเลือกหนึ่งในการเลือกใช้งาน LDAP Server โดยจะเป็นการติดตั้งและเริ่มต้นคอนฟิก OpenLDAP Server
หมายเหตุ ตัวอย่างในบทความนี้จะติดตั้งบนเครื่องที่ ติดตั้ง Fedora 9 แบบประหยัดพื้นที่สุด
ดาวน์โหลดไฟล์ rpm สำหรับติดตั้ง OpenLDAP
สามารถดาวน์โหลดไฟล์ rpm เวอร์ชั่นล่าสุด (update) ของ Fedora 9 สำหรับการติดตั้งได้ที่ http://mirrors.kernel.org/fedora/updates/9/ โดยรายชื่อไฟล์ที่ต้องดาวน์โหลด (ตุลาคม 2551) มีดังนี้
- openldap-2.4.10-1.fc9.i386.rpm
- openldap-clients-2.4.10-1.fc9.i386.rpm
- openldap-servers-2.4.10-1.fc9.i386.rpm
ติดตั้งโปรแกรมไฟล์ rpm ของ openldap
หลังจากได้ไฟล์ที่ดาวน์โหลดมา ใช้คำสั่ง rpm ในการติดตั้ง
ตัวอย่างการติดตั้งไฟล์ rpm โปรแกรม OpenLDAP
[root@fc9-min ~]# rpm -U openldap-2.4.10-1.fc9.i386.rpm [root@fc9-min ~]# rpm -i openldap-clients-2.4.10-1.fc9.i386.rpm [root@fc9-min ~]# rpm -i openldap-servers-2.4.10-1.fc9.i386.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.etZSRT' ----- 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 ด้วยออปชั่น -U (Upgrade) เพราะว่าจากการติดตั้ง Fedora 9 จะมีไฟล์ rpm ของ openldap ติดมาด้วย และมีโปรแกรมอื่นๆ ที่บังคับไม่ให้เราสามารถถอดไฟล์ rpm นี้ออกไปก่อนจะลงใหม่ได้ ออปชั่น -U จะเป็นการสั่งให้ปรับปรุงและแทนที่ด้วยเวอร์ชั่นใหม่ทับของเก่าไป
- การติดตั้ง openldap-servers จะมีข้อความขึ้นมา ซึ่งเป็นการสร้างคีย์ไฟล์เพื่อความปลอดภัยในการรับส่งข้อมูลระหว่างเซิร์ฟเวอร์กับไคลเอนต์ ณ ตอนนี้ไม่ต้องสนใจ
หลังจากติดตั้งแล้ว สามารถตรวจสอบเวอร์ชั่นของไฟล์ rpm ที่ติดตั้งได้ ดังนี้
[root@fc9-min ~]# rpm -qa | grep openldap openldap-servers-2.4.10-1.fc9.i386 openldap-clients-2.4.10-1.fc9.i386 openldap-2.4.10-1.fc9.i386
แก้ไขคอนฟิกไฟล์ /etc/openldap/slapd.conf
ไฟล์คอนฟิกหลักของ OpenLDAP Server คือไฟล์ /etc/openldap/slapd.conf ในเบื้องต้นจะต้องมีการแก้ไขบางส่วนก่อนที่จะเริ่มใช้งานได้ ในที่นี้จะสมมติข้อมูลเบื้องต้นสำหรับการคอนฟิก OpenLDAP Server เป็นดังนี้
Suffix: dc=test-ldap,dc=com Root DN: uid=root,ou=People,dc=test-ldap,dc=com Root PW: ldap1234
ก่อนที่จะเริ่มแก้ไขไฟล์คอนฟิก ต้องใช้คำสั่ง spappasswd เพื่อเข้ารหัส Root PW แล้วนำผลลัพธ์ที่ได้ไปใส่ไว้ส่วนของคอนฟิก rootpw ในไฟล์ slapd.conf โดยรหัสนี้จะใช้เมื่อต้องการแก้ไขข้อมูลที่อยู่ใน LDAP เช่นเพิ่ม แก้ไข ลบ ข้อมูล
ตัวอย่างการรันคำสั่ง spappasswd
[root@fc9-min openldap]# slappasswd New password: ldap1234 Re-enter new password: ldap1234 {SSHA}zA4XZB4pD1TUh/mRO31MC0kbUF+V0v2Y
นำผลลัพธ์การเข้ารหัสที่ได้ ไปใส่ไว้ในไฟล์ slapd.conf
ตัวอย่างการแก้ไขไฟล์ slapd.conf
database bdb suffix "dc=test-ldap,dc=com" rootdn "uid=root,ou=People,dc=test-ldap,dc=com" rootpw {SSHA}zA4XZB4pD1TUh/mRO31MC0kbUF+V0v2Y
directory /var/lib/ldap
รันเซอร์วิส ldap
ก่อนที่จะรันเซอร์วิส ต้อง copy ไฟล์ DB_CONFIG มาใส่ไว้ในไดเร็คทอรี /var/lib/ldap/ ก่อน แล้วใช้คำสั่ง service เพื่อรันเซอร์วิส ldap ดังนี้
[root@fc9-min ~]# cp /usr/share/doc/openldap-servers-2.4.10/DB_CONFIG.example /var/lib/ldap/DB_CONFIG [root@fc9-min ~]# chown ldap:ldap /var/lib/ldap/DB_CONFIG [root@fc9-min ~]# chmod 600 /var/lib/ldap/DB_CONFIG [root@fc9-min ~]# service ldap start Starting slapd: [ OK ]
สามารถตรวจสอบโปรเซสของ ldap ได้จากคำสั่ง ps ดังนี้
[root@fc9-min openldap]# ps -ef | grep ldap ldap 2382 1 0 13:17 ? 00:00:00 /usr/sbin/slapd -h ldap:/// -u ldap
ไฟล์ข้อมูลของ OpenLDAP Server จะถูกเก็บไว้ในไดเร็คทอรีที่ระบุในส่วนคอนฟิก directory ในไฟล์ slapd.conf จากตัวอย่างด้านบนจะเป็น /var/lib/ldap
[root@fc9-min ~]# ls -l /var/lib/ldap total 700 -rw-r--r-- 1 ldap ldap 2048 2008-10-12 01:39 alock -rw------- 1 ldap ldap 24576 2008-10-12 01:39 __db.001 -rw------- 1 ldap ldap 278528 2008-10-12 01:39 __db.002 -rw------- 1 ldap ldap 270336 2008-10-12 01:39 __db.003 -rw------- 1 ldap ldap 98304 2008-10-12 01:39 __db.004 -rw------- 1 ldap ldap 352256 2008-10-12 01:39 __db.005 -rw------- 1 ldap ldap 24576 2008-10-12 01:39 __db.006 -rw------- 1 ldap ldap 921 2008-10-17 16:18 DB_CONFIG -rw------- 1 ldap ldap 8192 2008-10-12 01:39 dn2id.bdb -rw------- 1 ldap ldap 32768 2008-10-12 01:39 id2entry.bdb -rw------- 1 ldap ldap 10485760 2008-10-12 01:39 log.0000000001
ทดสอบการดึงข้อมูลจาก LDAP
ถ้า OpenLDAP Server รันได้ถูกต้อง เราสามารถใช้คำสั่ง ldapsearch เพื่อดึงข้อมูลจาก LDAP ตัวอย่างด้านล่างจะเป็นการทดสอบดึงข้อมูลทั้งหมดมา ซึ่งตอนนี้ยังไม่มีข้อมูล ดังนั้นผลลัพธ์จะแสดงดังนี้
[root@fc9-min ldif]# ldapsearch -x -b "dc=test-ldap,dc=com" "(objectclass=*)" # extended LDIF # # LDAPv3 # base <dc=test-ldap,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL #
# search result search: 2 result: 32 No such object
# numResponses: 1