หายไปเป็นชาติกับการติดตั้ง LDAP Server ของผมตอนนี้กลับมาแล้วครับอย่างด่วน
เพราพี่ท่านเจ้านายสุดที่รัก สั่งมาว่า "...จะปีนึงแล้วนะน้อง จะได้ใช้หรือยังเนี่ยหา..." T_T
Project ข้ามชาติจริงๆผม เอ้ามาดูความคืบหน้าของวันนี้กัน
คือว่าเจ้า LDAP Server เนี่ยมันเป็นส่วนทำงานเบื้องหลังใช่มั้ย แล้วส่วนใหญ่คนที่จะทำงานกับมัน
ก็แอดมินอย่างผมเนี่ยแหละเพราะฉะนั้น ส่วนติดต่อกับผู้ใช้ มันก็ลำบากสำหรับคนใช้งานทั่วๆไป
เอาละสิปัญหามันอยู่ที่ว่า ผู้ใช้ต้องเปลี่ยนรหัสผ่านได้ด้วยตัวเอง ทำอย่างไรดีหล่ะ มันมีตัวเลือกง่ายๆ
1. ก็สอนผู้ใช้ให้รู้จัก phpLDAPAdmin สิเปลี่ยนเองก็ได้
2. หาที่เค้ามีอยู่แล้วมาใช้
3. สร้างส่วนติดต่อขึ้นมาใหม่ให้ใช้งานได้ง่าย
ข้อแรกแหะๆ ผมว่าผ่านไปเถอะครับ ร้อยพ่อพันแม่ กันซะขนาดนั้น แถมบุญเก่า กรรมใหม่ ของแต่ละคนยังไม่เท่ากัน
ทำใหม่ยังง่ายซะกว่าจริงนะเอ้า ลองอิมพลีเมนท์ระบบใหม่ๆ กับพนักงานเก่าๆ ในโครงสร้างบริษัทขนาดกลางๆดูสิครับ
แล้วจะรู้ว่ามันยากส์จริงๆ
มาดูข้อต่อไปกัน เอ่อแบบว่าพยายามหาแล้วนะ แต่ก็เอาเถอะ หาไม่เจอจริงๆเฮ้อ
เอ้าเขียนกันขึ้นมาใหม่เลยแล้วกัน ก็ไม่มีอะไรยากมากครับ
ทำหน้าจอตรวจสอบรหัสเก่า ต่อเชื่อมกับเครื่องแม่ข่าย แล้วก็ใส่ค่าลงไป
แค่นี้เองไม่ซับซ้อน หน้าจอเดียวทำงานอย่างเดียว จบได้ในตัวมันเอง
Attribute ที่เกี่ยวข้อง
userPassword = {HASH}crypted-string
sambaLMPassword = Digest::MD4
sambaNTPassword = Digest::MD4
sambaPwdMustChange = Unix Time
การจะสร้างค่าของ userPassword เราจะใช้คำสั่ง slappasswd -h {HASH} -s secret อย่างนี้
# slappasswd -h {MD5} -s password
ส่วนค่าของ sambaLMPassword กับ sambaNTPassword นั้นเอามาจากคำสั่ง mkntpwd -L secret -N secret
# mkntpwd -L password -N password
sambaPwdMustChange เป็น Unix Time เริ่มนับกันเป็นวินาทีตั้งแต่ วันที่ 1 มกราคม 1979 เวลา 00:00:00 ครับ
เราหาค่า Unix time ได้ด้วยคำสั่งนี้ date --date="string date" +%s
# date --date="15 Jan 2007" +%s
แต่ช้าก่อนผมมีวิธีที่ง่ายกว่านั้นอิอิอิ
smbldap-passwd สิครับทำให้หมดทุกอย่าง ทั้งคำนวนวันหมดอายุและจัดการเรื่อง Policy แต่ว่ามันต้องรอให้ผู้ใช้ใส่รหัสผ่านเองสองครั้ง
ส่งรหัสผ่านเข้าไปตรงๆไม่ได้ เรามีวิธีแก้ครับง่ายๆ สร้างไฟล์คำสั่งขึ้นมาแบบนี้
#!/bin/bash
smbldap-passwd $1 << EOF
$2
$2
EOF
ผมตั้งชื่อ Shell script นี้ว่า chpwdldap.bash เวลาจะใช้ก็ง่ายๆเรียกกันตรงๆเลย
# chpwdldap.bash username password
เล่นกันซึ่งๆถึกๆแต่สะดวกนะคร้าบ
Friday, December 01, 2006 at 15:46