คอนฟิกให้ authenticate จาก Fedora Directory Server

หลังจากที่เราติดตั้งและคอนฟิก Fedora Directory Server เรียบร้อยแล้ว ในบทความนี้จะอธิบายถึงการเก็บ UNIX User Account และ Group เข้าไปใน LDAP เพื่อที่จะใช้รองรับการ authentication จากโปรแกรมต่างได้ เช่น สำหรับการ login, secure shell และอื่นๆ

โดยดีฟอลต์เมื่อติดตั้ง Fedora Directory Server ตัวโปรแกรมจะสร้างข้อมูลพื้นฐานขึ้นมาจำนวนหนึ่ง ซึ่งประกอบด้วย

  • Base DN – ซึ่งจะเป็นชื่อพื้นฐานโดเมนที่เราใช้ตอนติดตั้ง ในบทความนี้จะคอนฟิกอยู่ในโดเมน (BASE) เป็น dc=your-domain, dc=com ที่รันอยู่บนเครื่องที่ชื่อ “server”
  • ou=Users – มีไว้สำหรับเก็บข้อมูลของผู้ใช้งาน ซึ่งเราจะไว้เก็บ UNIX User Account จากไฟล์ /etc/passwd
  • ou=Groups – จะเป็นส่วนที่เก็บข้อมูลกลุ่มของผู้ใช้งาน (Groups) ซึ่งเราจะไว้เก็บ UNIX Group จากไฟล์ /etc/group

ในการที่จะ authenticate รหัสผู้ใช้งานจาก LDAP ได้นั้น เราจะต้องนำข้อมูลของผู้ใช้งานจากไฟล์ /etc/passwd, /etc/group ไปเก็บไว้ใน LDAP โดยจะมีวิธีการอยู่หลายวิธี แต่ในที่นี้จะแนะนำวิธีการสร้างไฟล์ ldif ขึ้นมา แล้วค่อย import เข้าไปใน LDAP โดยที่ Directory Server กำลังทำงานอยู่

สร้างไฟล์ passwd.ldif
เริ่มต้นสร้างไฟล์ passwd.ldif ซึ่งจะเก็บ user account และรายละเอียดของ user นั้นๆ อยู่ ซึ่งจากตัวอย่างด้านล้าง จะเป็นข้อมูลของผู้ใช้งานที่ใช้ login เป็น user01 (uid: user01)

dn: uid=user01,ou=People,dc=your-domain,dc=com
uid: user01
cn: user01
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}*
shadowLastChange: 14050
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 601
gidNumber: 600
homeDirectory: /home/user01
gecos: user01

ถ้าต้องการสร้างผู้ใช้หลายๆ คน ก็เพิ่มข้อมูลต่อท้ายลงไปในไฟล์นี้โดยให้เว้นไว้บรรทัดว่างไว้หนึ่งบรรทัด ระหว่างข้อมูลแต่ละ user

สร้างไฟล์ group.ldif
ขั้นต่อไปสร้างไฟล์ group.ldif ซึ่งจะเก็บ UNIX Group และรายละเอียด ซึ่งจากตัวอย่างด้านล้าง จะเป็นข้อมูลของกลุ่มผู้ใช้งานที่ชื่อ ldapuser

dn: cn=ldapusers,ou=Groups,dc=your-domain,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapusers
userPassword: {crypt}x
gidNumber: 600

Import ข้อมูลจากไฟล์ ldif เข้าไปใน LDAP
เมื่อได้ไฟล์ ldif แล้ว ต้องใช้คำสั่ง ldif2ldap เพื่อนำข้อมูลจากไฟล์เข้าไปเก็บไว้ใน LDAP โดยก่อนที่จะรันคำสั่งนี้ได้ Directory Server ต้องรันทำงานอยู่แล้ว

เวลาที่รันคำสั่ง ldif2ldap จำเป็นต้องระบุ “cn=Directory Manager” และรหัสผ่านลงไปด้วย โดยรหัสผ่านนี้คือรหัสที่ใส่ตอนใช้คำสั่ง setup-ds-admin.pl ตอนที่คอนฟิก Directory Server ตั้งแต่ตอนแรกที่ติดตั้ง

ตัวอย่างการรันคำสั่ง ldif2ldap เพื่อนำข้อมูลจากไฟล์เข้าไปใน LDAP

[root@server ~]# /usr/lib/dirsrv/slapd-server/ldif2ldap "cn=Directory Manager" <password> passwd.ldif
adding new entry uid=user01,ou=People,dc=your-domain,dc=com
[root@server ~]# /usr/lib/dirsrv/slapd-server/ldif2ldap "cn=Directory Manager" <password> group.ldif
adding new entry cn=ldapusers,ou=Groups,dc=your-domain,dc=com

หมายเหตุ
– ในที่นี้จะรันอยู่บนเครื่องที่ชื่อ server ดังนั้น path ที่ใช้จะเป็น /usr/lib/dirsrv/slapd-server/ ซึ่งถ้าคุณรันคำสั่งนี้บนชื่อเครื่องอื่นๆ ให้เปลี่ยนตรงคำว่า server
– ให้สังเกตผลลัพธ์จากการรันคำสั่ง ldif2ldap ด้วย ว่าสำเร็จหรือไม่ ถ้าไม่สำเร็จ ให้แก้ไข ไฟล์และรันใหม่อีกครั้ง

เปลี่ยนคอนฟิกของเครื่องให้อ่านข้อมูล User Account และ Group จาก LDAP ด้วย
โดยดีฟอลต์ของ Linux ข้อมูล User Account และ Group จะถูกอ่านจากไฟล์ /etc/passwd และ /etc/group ตามลำดับ ถ้าเราต้องการให้มาอ่านข้อมูลจาก LDAP ด้วย ให้ใช้คำสั่ง authconfig-tui เพื่อแก้คอนฟิก

 
[root@server ~]# authconfig-tui
┌────────────────┤ Authentication Configuration ├─────────────────┐
│                                                                 │
│  User Information        Authentication                         │
│  [*] Cache Information   [ ] Use MD5 Passwords                  │
│  [ ] Use Hesiod          [*] Use Shadow Passwords               │
│  [*] Use LDAP            [*] Use LDAP Authentication            │
│  [ ] Use NIS             [ ] Use Kerberos                       │
│  [ ] Use Winbind         [ ] Use SMB Authentication             │
│                          [ ] Use Winbind Authentication         │
│                          [*] Local authorization is sufficient  │
│                                                                 │
│            ┌────────┐                      ┌──────┐             │
│            │ Cancel │                      │ Next │             │
│            └────────┘                      └──────┘             │
│                                                                 │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

คลิ้กเลือก [*] Use LDAP และ [*] Use LDAP Authentication แล้วกดปุ่ม Next

┌─────────────────┤ LDAP Settings ├─────────────────┐
│                                                   │
│          [ ] Use TLS                              │
│  Server: ldap://localhost/_______________________ │
│ Base DN: dc=your-domain,dc=com___________________ │
│                                                   │
│         ┌──────┐                  ┌────┐          │
│         │ Back │                  │ Ok │          │
│         └──────┘                  └────┘          │
│                                                   │
│                                                   │
└───────────────────────────────────────────────────┘

ใส่คอนฟิกของ Server เป็น ldap://localhost และ ใส่ Base DN: เป็น dn=your-domain, dc=com แล้วกดปุ่ม Ok

คำสั่ง authconfig-tui จะไปแก้ไฟล์ /etc/ldap.conf และไฟล์ต่างๆ ใน /etc/pam.d/ ซึ่งหลังจากแก้ไขแล้ว ต่อไปเวลาตรวจสอบชื่อหรือรหัสผู้ใช้งาน ระบบจะตรวจสอบจากไฟล์ /etc/passwd และ /etc/group ก่อน ถ้าหาไม่พบถึงจะไปค้นหาใน LDAP อีกที

ทดสอบการใช้งาน
สามารถใช้คำสั่ง id เพื่อตรวจสอบ User Account จาก LDAP ได้ โดยผลลัพธ์ที่ได้จะมี uid, group ของผู้ใช้งานนั้นๆ

ตัวอย่างการใช้คำสั่ง id เพื่อตรวจสอบ User จาก LDAP

[root@server ~]# id user01
uid=601(user01) gid=600(ldapusers) groups=600(ldapusers)

ถ้าต้องการเปลี่ยนแปลงข้อมูล เช่น password หรือต้องการลบ แนะนำให้ใช้ Management Console ได้ จากการรันคำสั่ง fedora-idm-console ใน X Window

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.