มูลนิธิสื่อเพื่อเยาวชน
ว่าที่ร้อยตรี จิรศักดิ์ กรรเจียกพงษ์

การติดตั้ง LDAP (Lightweight Directory Access Protocol)


LDAP เป็นโปรโตคอลที่ทำงานร่วมกับ Directory Service ซึ่งจะเป็นตัวกลางในการติดต่อระหว่าง Directory Client และ DirectoryServerให้มีการทำงานอย่างสะดวกรวดเร็วและลดปัญหาการติดต่อกันในหลายๆแพล็ทฟอร์มที่มีระบบการทำงานที่แตกต่าง
กันโดยมีการนำข้อมูลเข้าหรือออกจากไดเร็คทอรี่ด้วยไฟล์ LDIF(LDIFจะเป็นไฟล์ที่รักษาระบบความปลอกภัยได้ดีในการเข้าถึง
ส่วนต่าง ๆ ของ Directory Server)

LDAP จะใช้โปรโตคอล OSI Networkในการติดต่อสื่อสารและมีการทำงานอยู่ในโปรโตคอล TCP/IP เพื่อการเข้ารหัสของ Directory Client ในการนำข้อมูล เข้า –ออก จาก Directory ได้ง่ายและมีความปลอดภัยสูง

หน้าที่การทำงานของ Directory Server ใน LDAP


DirectoryServerในโปรโตคอลLDAPนี้จะมีระบบการทำงานที่เป็นการบริหารงานจากส่วนกลางในส่วนกลางนี้จะมีการแบ่งหน้าที่
การทำงานอกเป็นส่วน ๆ (เปรียบเทียบได้กับสมุดหน้าเหลืองที่มีการเก็บข้อมูลไว้เป็นหมวดหมู่) เมื่อผู้ใช้ (Client หลาย ๆ เครื่อง) ต้องการเข้ามาใช้งานในส่วนที่ต้องการ LDAP Server ก็จะกระจายข้อมูลไปให้ Client ได้อย่างรวดเร็ว เมื่อClient ต้องการค้นหาข้อมูลก็สามารถทำได้อย่างสะดวกรวดเร็วได้เช่นกันจะเห็นได้ว่าDirectoryจะทำงานคล้ายกับฐานข้อมูลที่มีการจำกัด
ชนิดของข้อมูลที่จะทำการเก็บลงใน Directory ข้อมูลที่จะทำการเก็บลงจะต้องมีการตรวจสอบความถูกต้องด้วย แต่ความจริงแล้ว Directory มีความแตกต่างจากฐานข้อมูลตรงที่ Directory จะมีการใช้งานอย่างไม่จำกัดเตรียมรับกับสถานการณ์ที่ Client เข้ามาใช้งานมาก ๆ เครื่อง Server ที่ให้การบริการอยู่ก็สามารถรองรับการทำงานได้ จะเห็นได้ว่าในปัจจุบันนี้ในองค์กรต่าง ๆ ได้มีการนำ Directory Server มาใช้กันอย่างแพร่หลาย เพราะสามารถควบคุมการเข้าใช้งานในระบบต่าง ๆ ในการเข้าถึงข้อมูลของ Server รวมถึงการรักษาความปลอดภัย แต่ Directory Server จะเหมาะกับงานที่มีการอ่านมากกว่าการบันทึกข้อมูล Directory จึงออกแบบมาให้สามารถรองรับการทำงานจาก Client ได้หลาย ๆ แพลทฟอร์ม ได้พร้อม ๆ กัน

ขั้นตอนการทำงานของ LDAP


LDAP จะทำงานแบบ Client/Server โดยทาง Client จะมีการลงโปรแกรมไว้ เมื่อต้องการข้อมูลจาก Server ก็จะทำการส่ง Request โดยจะผ่านโปรโตคอล TCP/IP เมื่อทาง Server ได้รับ Request แล้ว จะทำการประมวลผลตามที่ Client ต้องการ และส่ง Result กลับไปให้ Client LDAP ไม่เพียงแค่ทำงานแบบ Client/Server เท่านั้น ยังสามรถทำงานแบบ Messages-Oriented ได้อีก โดยที่ Message –Oriented หมายถึง การติดต่อสื่อสารระหว่าง Client-Server ที่จะมีการส่ง Messages เป็น Request ไปยัง Server และเมื่อ Server ได้รับก็จะส่ง Result กลับมาในรูปของ Message ไปให้ Client เราจะเรียกการส่งแบบนี้ว่า “ Series Ldap Message

================================================================================


เริ่มต้นการทำงานของ Ldap

การติดตั้ง Ldap sever

ทางฝั่ง Server ทำการติดตั้งโปรแกรมดังนี้
openldap
openldap-clients
openldap-devel
nss_ldap
openldap-servers


โดยใช้คำสั่ง
rpm –I openldap-2.0.27-11.i386.rpm
rpm -I openldap-clients-2.0.27-11.i386.rpm
rpm -I openldap-devel-2.0.27-11.i386.rpm
rpm -I nss-ldap-2.0.27-11.i386.rpm
rpm -I openldap-server-2.0.27-11.i386.rpm
จากนั้นสร้างไดเร็กทอรี่สำหรับเก็บข้อมูล (สร้างที่ใดก็ได้) โดยใช้คำสั่ง

[root@Lab522-21]# mkdir / moo.com
[root@Lab522-21]# chown ldap:ldap /moo.com

คือการสร้างไดเร็กทอรี่ชื่อ moo ตามด้วยการเปลี่ยน Owner เป็น moo

ทำการเข้ารหัสผ่านของ root โดยใช้ slappasswd

[root@Lab522-21]# slappasswd
New password:
Re-enter new password:
{SSHA}v4qLq/qy01w9my60LLX9BvfNUrRhOjQZ
[root@ Lab522-21]#

เมื่อใช้คำสั่ง slappasswd จะให้ใส่ Password และ Re-enter new password จากนั้นจะปรากฏ {SSHA}v4qLq/qy01w9my60LLX9BvfNUrRhOjQZ คือรหัสที่คีย์ที่เราต้องนำไปใช้สร้าง Directory

เข้าไปแก้ไข ไฟล์ slapd.conf โดยเพิ่มข้อมูลดังนี้
เข้าไปที่ vi /etc/openldap/slapd.conf
และแก้ไขข้อมูลดังนี้

database ldbm (เป็นชนิดของฐานข้อมูล ldbm)
suffix "dc=moo,dc=com" (domain components ชื่อ moo.com)
rootdn "cn=Manager,dc=moo,dc=com" (common name ชื่อ Manager )
rootpw {SSHA}v4qLq/qy01w9my60LLX9BvfNUrR (รหัสของการเข้ามาแก้ไข)
directory /moo.com (ที่เก็บข้อมูล /moo.com )

สั่งให้ Ldap เริ่มทำงาน โดยใช้คำสั่ง service ldap start ถ้าปรากฏ Starting slapd: [ OK ]
นั่นหมายความว่า สามารถทำงานได้

ต้องการสร้างผู้ใช้ ใช้คำสั่ง

[root@ Lab522-21]# useradd -g users mek
[root@ Lab522-21]# passwd mek
Changing password for user mek.
New password:
Retype new password:
passwd: all authentication updatedsuccessfully.
[root@ Lab522-21]#

คือการกำหนดให้ผู้ที่สามารถเข้ามาใช้งานได้ ชื่อ mek และใส่รหัสผ่านที่สามารถเข้ามาใช้งานที่ Sever ได้
ทำการนำ Password ของผู้ใช้มาสร้างเป็นไฟล์ใหม่สำหรับ Ldap /etc/passwd ของ user
โดยใช้คำสั่ง

[root@Lab522-21]# grep mek /etc/passwd > /etc/openldap/passwd.mek
[root@ Lab522-21]# grep root /etc/passwd > /etc/openldap/passwd.root

การสร้าง User ผ่านไฟล์ .ldif

[root@Lab522-21]# /usr/share/openldap/migration/migrate_passwd.pl
/etc/openldap/passwd.mek /etc/openldap/mek..ldif
[root@ Lab522-21]# /usr/share/openldap/migration/migrate_passwd.pl
/etc/openldap/passwd.root /etc/openldap/root.ldif


การแก้ไขไฟล์ LDIF โดยใช้ %s/padl/moo/g
คือการเปลี่ยนทุก ๆ ตำแหน่งในส่วนของ dc ให้เป็น moo
พร้อมทั้งเปลี่ยน ที่อยู่ข้างล่าง UID เป็น Manager
โดยเข้าไปแก้ไขไฟล์ใน vi /etc/openldap/moo.com.ldif

==========================================================================

dn: dc=moo,dc=com
dc: moo
description: Root LDAP entry for moo.com
objectClass: dcObject
objectClass: organizationalUnit
ou: rootobject
dn: ou=People, dc=moo,dc=com
ou: People
description: All people in organisation
objectClass: organizationalUnit

==========================================================================

บันทึกไฟล์ Ldif ลงในฐานข้อมูล

[root@Lab522-21]# ldapadd -x -D "cn=Manager,dc=moo,dc=com"
-W -f /etc/openldap/moo.com.ldif
[root@ Lab522-21]# ldapadd -x -D "cn=Manager,dc=moo,dc=com"
-W -f /etc/openldap/root.ldif
[root@ Lab522-21]# ldapadd -x -D "cn=Manager,dc=moo,dc=com"
-W -f /etc/openldap/mek.ldif

ทดลองค้นหาข้อมูล

root@ Lab522-21]# ldapsearch -x -b 'dc=moo,dc=com' '(objectclass=*)'

การติดตั้ง Ldap Client

ทางด้าน Client ทำการติดตั้งโปรแกรมดังนี้
openldap
openldap-clients
openldap-devel
nss_ldap

เข้าไปแก้ไขไฟล์ /etc/openldap/ldap.conf
โดยเปลี่ยนส่วนของ Host และส่วนของ Base เป็น

HOST 172.19.2.20
BASE dc=moo,dc=com

เพื่อให้ชี้ไปยังเครื่องของ Server และให้ค้นหาข้อมูลที่ ไฟล์ moo
เข้าไปแก้ไขไฟล์ /etc/nsswitch.conf โดยเข้าไปที่ /usr/bin/authconfig จะปรากฏ



ให้ใส่ * ในส่วนของ [*] Use Shadow Passwords
[*] Use MD5 Passwords
[*] Use LDAP
และกำหนดหมายเลข IP ของ server ที่จะติดต่อ
[ *] Use TLS
Server: 172.19.2.20
Base DN: dc=moo,dc=com
คือติดต่อที่ หมายเลข IP ของ Server ในไฟล์ชื่อ moo.com

ตรวจสอบการทำงานของUser โดยใช้คำสั่ง

grep mek /etc/passwd

ทำการสร้าง ที่เก็บของ user โดยใช้คำสั่ง

[root@Lab522-20]# mkdir /home/mek

ทำการเปลี่ยน Permission ของ user โดยใช้คำสั่ง

[root@Lab522-20]# chmod 700 /home/mek/

ทำการเปลี่ยนผู้ใช้ เป็น mek

chown mek:users /home/mek/

ดูไฟล์ในส่วนของ Home โดยใช้คำสั่ง ll /home

และการ copy ข้อมูลมาเก็บไว้ที่ส่วนของผู้ใช้

[root@Lab522-20]# cp /etc/skel/.* /home/mek/

ทำการเปลี่ยนกลุ่มของ user

chown mek:users /home/mek/.*

ใช้คำสั่งค้นหาข้อมูลของผู้ใช้

ldapsearch -x -b 'dc=example,dc=com' '(objectclass=*)'

// การเพิ่มผู้ใช้ใหม่

vi /usr/local/bin/addldapuser
=============================================================================
#!/bin/bash
- grep $1 /etc/passwd > /tmp/changeldappasswd.tmp
- /usr/share/openldap/migration/migrate_passwd.pl
/tmp/changeldappasswd.tmp /tmp/changeldappasswd.ldif.tmp
- cat /tmp/changeldappasswd.ldif.tmp | sed s/padl/moo/ > /tmp/changeldappasswd.ldif
- ldapadd -x -D "cn=Manager,dc=moo,dc=com" -W -f
/tmp/changeldappasswd.ldif
- rm -f /tmp/changeldappasswd.*

=============================================================================

Chmod 700 /usr/local/bin/addldapuser
useradd -g users mint
[root@ Lab522-21]# addldapuser mint
Enter LDAP Password:
adding new entry "uid=mint,ou=People,dc=moo,dc=com"

// การลบ users

vi /usr/local/bin/deleteldapuser
=============================================================================
#!/bin/bash
ldapdelete -x -W -D "cn=Manager,dc=moo,dc=com"
"uid=$1,ou=People,dc=moo,dc=com"

=============================================================================
chmod 700 /usr/local/bin/deleteldapuser
[root@ Lab522-21]# deleteldapuser mintEnter LDAP Password:
[root@ Lab522-21]#

//การเปลี่ยนรหัสผ่านของ users

vi /usr/local/bin/modifyldapuser

============================================================================
#!/bin/bash
- grep $1 /etc/passwd > /tmp/modifyldapuser.tmp
- /usr/share/openldap/migration/migrate_passwd.pl
/tmp/modifyldapuser.tmp /tmp/modifyldapuser.ldif.tmp
- cat /tmp/modifyldapuser.ldif.tmp | sed s/padl/moo/ > /tmp/modifyldapuser.ldif
- ldapmodify -x -D "cn=Manager,dc=moo,dc=com" -W -f /tmp/modifyldapuser.ldif
- rm -f /tmp/modifyldapuser.*
============================================================================

chmod 700 /usr/local/bin/modifyldapuser

Ldap Modify


คำสั่ง ldapmodify เป็นคำสั่งที่มีการทำงานเหมือนกับคำสั่ง Ldapadd ที่ทำการเพิ่ม User หรือ Entry ต่าง ๆ ใน Directory Server เช่น o, ou , cn , uid เป็นต้น และ ldapModify สามารถใช้เปลี่ยนแปลงแก้ไขเฉพาะ Object หรือ
Attribute ได้

Option ของ LapModify ประกอบด้วย

-a
Add Entry ที่อยู่ในไฟล์ LDIF ไปยังไดเร็คทอรี่เซิฟเวอร์ ถ้าใช้คำสั่ง Ldap Modify ad Entry ไม่
ต้องกำหนด changetype add ไว้ในส่วนหัวของ LDIF
-B
Suffix Base DN ที่ต้องการจะ Add Entry ภายใต้ DIT ที่กำหนด
-D
bindDN ที่ใช้ในการ Authentication เช่น “uid =bjensen.out =people.o=abc.com”
-f
file กำหนดพาร์ทและชื่อไฟล์ LDIF ที่จะทำการ ADD
-h
hostname ชื่อโฮสต์ไดเร็คทอรี่
-j
กำหนดการอ่านพาสเวิร์ดจากไฟล์ ถ้ามีการใช้ออปชั่น –j ไม่ต้องระบุพาสเวิร์ดด้วยออปชั่น -w
-p
port หมายเลข port ของไดเร็คทอรี่เซิร์ฟเวอร์
-q
ไม่แสดงการทำงานผ่านทางหน้าจอ
-w
พาสเวิร์ดของยูสเซอร์
-R
กำหนด Referrals
-v
กำหนดในโหมด verbose
-V
Version ของโปรโตคอล LDAP ที่จะทำงาน เช่น –V 2 ทำงานในโหมดโปรโตคอล LDAP V2
-y
proxy DN ใช้สำหรับโอเปอร์เรชั่น delect
-K
Certificate Key สำหรับ Authentication แบบ SSL
-X
Certificate Server Name ชื่อโฮสต์ที่เก็บ Certificate –base Authentication
-p
part ที่เก็บ Certificate key ของไคลเอ็นท์
-W
Server Password สำหรับ Certificate Database identified จะได้ใช้ร่วมกับออปชั่น -p
-Z
กำหนดการใช้ SSL เฉพาะ directory request

 

Ldapdelete

Delete เป็นคำสั่งที่ใช้ลบ user หรือ Entry ออกจากไดเร็คทอรี่เซอร์เวอร์
Option ldapdelete ประกอบด้วย

-D
Base DN ที่ใช้ในการ Bind เช่น “cn=Directory Manager”
-h
hostname ชื่อโฮสไดเร็คตอรี่
-j
กำหนดการอ่านพาสเวิร์ดจากไฟล์ ถ้ามีการใช้ออปชั่น – j ไม่ต้องระบุพาสเวิร์ดด้วยออปชั่น -w
-p
port หมายเลขพอร์ทของไดเร็คทอรี่เซิฟเวอร์
-w
Password ของ user DN


Ldap Search

Option ของ ldapsearch ประกอบด้วย

-b
baseDN ของไดเร็คทอรี่ DIT ที่เราต้องการ Search เช่น ou=people ,o=abc.com
-D
bindDN หรือ Distinguished Name ที่จะใช้ Authentication
-h
hostname ชื่อฮสต์ไดเร็คทอรี่
-j
กำหนดการอ่านพาสเวิร์ดจากไฟล์ ถ้ามีการใช้ออปชั่น –j ไม่ต้องระบุพาสเวิร์ดด้วยออปชั่น -w
-I
กำหนดเวลาสูงสุดที่ใช้ในการ Search หน่วยเป็นวินาที
-p
potr หมายเลขพอร์ดของไดเร็คทอรี่เซิฟเวอร์
-s
กำหนด scope of search ในระดับของการ search 3 ระดับ base ,one ,sub
-w
Password ของยูสเซอร์
-x
เรียงลำดับผลการ Search บนไดเร็คทอรี่เซอร์ฟเวอร์ก่อนส่งมายังไคลเอนท์
-z
กำหนดจำนวนมากสุดของ Entry ที่จะส่งมายังไคลเอนท

 

===========================
ผู้จัดทำ

นาย สุเมฆ วิลาจันทร์
นางสาว หรรษา ธรรมดีกุล


============================


ที่มา : http://www.cs.bru.ac.th/modules.php?name=News&file=article&sid=86&mode=thread&order=0&thold=0 


คำสำคัญ (Tags): #ldap
หมายเลขบันทึก: 91167เขียนเมื่อ 19 เมษายน 2007 11:33 น. ()แก้ไขเมื่อ 22 มิถุนายน 2012 01:51 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (6)

บดความดีมากครับ  ผมต้องการ ถ่าย user ใน Ldap ไป windowd AD ครับ ขอคำแนะนิดครับ 

บทความอ่านแล้วเข้าใจดีมาก ขอชม

อยากให้มีการเผยแพร่มากขึ้น

ขอบคุณมากครับ บทความดีมากๆ *********************************************************************** รู้แล้ว..Dictionary online แปลภาษา แปลศัพท์ แปลไทย แปลอังกฤษ แปลได้ทุกที่ แปลเร็วมาก ใช้ดีจึงบอกต่อ Free http://www.ruyrew.com "รู้แล้ว..Dictionary online แปลภาษา แปลศัพท์ แปลไทย แปลอังกฤษ แปลได้ทุกที่ แปลเร็วมาก Free http://ruyrew.com "รู้แล้ว..Dictionary online แปลภาษา แปลศัพท์ แปลไทย แปลอังกฤษ แปลได้ทุกที่ แปลเร็วมาก"

เยี่ยมมากๆ ครับ แต่รูปไม่แสดงนะครับ ไม่รู้คนอื่นๆ เห็นรูปไหมครับ

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท