================================================================================
เริ่มต้นการทำงานของ 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
บดความดีมากครับ ผมต้องการ ถ่าย user ใน Ldap ไป windowd AD ครับ ขอคำแนะนิดครับ
บทความอ่านแล้วเข้าใจดีมาก ขอชม
อยากให้มีการเผยแพร่มากขึ้น
เข้ามาเยี่ยมอ่ะ
เยี่ยมมากๆ ครับ แต่รูปไม่แสดงนะครับ ไม่รู้คนอื่นๆ เห็นรูปไหมครับ