การทำสำเนา Open Directory อาจใช้ไม่ได้ มีข้อความว่า "เกินขีดจำกัดขนาด" ปรากฏขึ้นใน slapd.log

การทำสำเนา Open Directory อาจใช้ไม่ได้ เมื่อเป็นเช่นนี้ รายการต่างๆ ดังต่อไปนี้จะปรากฏขึ้นใน /var/log/slapd.log

slapd[209]: do_syncrep2: rid=001 LDAP_RES_SEARCH_RESULT (4) Size limit exceeded
slapd[209]: do_syncrep2: rid=001 (4) Size limit exceeded

อาจเป็นเช่นนี้ได้หากเซิร์ฟเวอร์ Open Directory ล่มเป็นเวลานาน หรือหากสำเนาถูกสร้างเมื่อมีออบเจ็กต์มากกว่า 11000 ในที่จัดเก็บข้อมูล LDAP   11000 คือจำนวนสูงสุดของออบเจ็กต์ตามค่าเริ่มต้นที่สามารถส่งกลับในการค้นหาได้

อนุญาตให้ผู้ใช้ _ldap_replicator เขียนทับขีดจำกัดการค้นหาได้  สามารถทำเช่นนี้ได้โดยการเปลี่ยนการกำหนดค่าเซิร์ฟเวอร์ LDAP บนเซิร์ฟเวอร์ Open Directory ทุกตัว ซึ่งจะเกี่ยวข้องกับการรับรองความถูกต้องในฐานะผู้ดูแลระบบไดเรกทอรี และการเรียกใช้คำสั่งการแก้ไข LDAP บางอย่างใน Terminal และจำเป็นต้องทราบฐานการค้นหาหรือที่เรียกว่าบริบทการตั้งชื่อ สำหรับเซิร์ฟเวอร์ LDAP ด้วย

สามารถใช้ขั้นตอนต่อไปนี้เพื่อดำเนินการนี้ให้สำเร็จ

อันดับแรก ให้ค้นหาฐานการค้นหาสำหรับเซิร์ฟเวอร์ LDAP ก่อน

ค้นหาฐานการค้นหาสำหรับเซิร์ฟเวอร์ LDAP  ซึ่งโดยปกติแล้วจะเป็นชื่อโดเมนที่มีคุณสมบัติครบถ้วนของเซิร์ฟเวอร์ด้วยการเพิ่ม dc= หน้าแต่ละป้ายชื่อและเปลี่ยนจุดให้เป็นจุลภาค

ตัวอย่างเช่น เซิร์ฟเวอร์ที่มีชื่อโฮสต์ว่า server.example.com จะมีฐานการค้นหาเริ่มต้นเป็น "dc=server,dc=example,dc=com"  ฐานการค้นหาสามารถตรวจสอบได้ด้วยการสอบถามเซิร์ฟเวอร์ LDAP เองด้วยคำสั่ง Terminal ต่อไปนี้

ldapsearch -x -LLL -b “” -s base namingContexts

มองหาบรรทัดที่มีคำว่า namingContexts และฐานการค้นหาจะอยู่หลังเครื่องหมายโคลอน (:) ตามตัวอย่างผลลัพธ์ที่ได้ด้านล่างนี้

dn:
namingContexts: dc=server,dc=example,dc=com

สอง ให้รับข้อมูลประจำตัว Kerberos สำหรับผู้ดูแลระบบไดเรกทอรี

ชื่อเริ่มต้นของผู้ใช้รายนี้คือ diradmin แต่ชื่ออาจถูกเปลี่ยนไปเมื่อ Open Directory หลักถูกสร้าง ทำเช่นนี้ได้โดยใช้คำสั่ง kinit ใน Terminal  เรียกใช้คำสั่งต่อไปนี้ แทนที่ชื่อที่ถูกต้องสำหรับผู้ดูแลระบบไดเรกทอรีสำหรับ diradmin ถ้าจำเป็น และป้อนรหัสผ่านเมื่อระบบแจ้ง ไม่มีผลลัพธ์

kinit diradmin

ต่อไป ให้ใช้ ldapmodify ในโหมดโต้ตอบใน Terminal เพื่อทำการเปลี่ยนแปลง เพียงปฏิบัติการดังต่อไปนี้ใน Terminal=:

ldapmodify

หมายเหตุ: ซึ่งจะให้ผลลัพธ์เป็นข้อความ SASL บางอย่างแล้วรอข้อมูลป้อนเข้า  เมื่อทำสำเร็จแล้ว ผลลัพธ์ SASL ควรมีลักษณะเช่นนี้คือ

SASL/GSSAPI authentication started
SASL username: diradmin@REALM
SASL SSF: 56
SASL data security layer installed.

แก้ไขการกำหนดค่า

สุดท้าย ทำการแก้ไขการกำหนดค่า ซึ่งจำเป็นต้องป้อนข้อความทั้งหมดด้านล่างนี้ในหน้าต่าง Terminal ให้เป็นข้อมูลป้อนเข้าในคำสั่ง ldapmodify ฐานการค้นหาต้องถูกแทนที่สำหรับ [ฐานการค้นหา] ด้านล่างนี้ และต้องเอาวงเล็บออกด้วย

dn: olcDatabase={1}bdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

ตอนนี้ให้กด Control-D

หากทุกอย่างสำเร็จแล้ว ข้อความดังต่อไปนี้จะแสดงขึ้น

modifying entry "olcDatabase={1}bdb,cn=config"
modifying entry "olcDatabase={2}bdb,cn=config"

เรียนรู้เพิ่มเติม

   

สคริปต์ Shell ทางเลือก

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

#!/bin/sh
nc=`ldapsearch -x -LLL -b "" -s base namingContexts | awk '/namingContexts/ {print $2}'`
ldapmodify  <<EOF
dn: olcDatabase={1}bdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="uid=_ldap_replicator,cn=users,$nc" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="uid=_ldap_replicator,cn=users,$nc" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

EOF
#end of script
วันที่เผยแพร่: