เหตุใดคำสั่ง ldapadd นี้จึงปิดด้วยข้อผิดพลาด“ ไวยากรณ์ไม่ถูกต้อง”


14

ฉันยังใหม่กับ openldap แต่มีความเชี่ยวชาญในระบบ linux / unix ฉันพยายามที่จะติดตั้งการทดสอบครั้งแรกของฉันมาก OpenLDAP สภาพแวดล้อมการใช้คู่มือที่นี่ ฉันยังอ่านคู่มือผู้ดูแลระบบส่วนใหญ่ที่นี่และฉันต้องยอมรับมันเป็นเรื่องที่ต้องทำ

ดังนั้นการทำตามคู่มือการตั้งค่าพื้นฐานของ Ubuntu ฉันสร้างไฟล์ ldif ที่มีลักษณะดังนี้:

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups

dn: cn=engineers,ou=Groups,dc=example,dc=com
objectClass: posixGroup
cn: engineers
gidNumber: 5000

dn: uid=john,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 10000
gidNumber: 5000
userPassword: johnldap
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john

เมื่อใดก็ตามที่ฉันพยายามเพิ่มโดยใช้:

$ ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_content.ldif

ฉันได้รับข้อผิดพลาดต่อไปนี้:

adding new entry "cn=engineers,ou=Groups,dc=my-domain,dc=com"
ldap_add: Invalid syntax (21)
    additional info: objectClass: value #0 invalid per syntax

adding new entry "uid=john,ou=People,dc=my-domain,dc=com"
ldap_add: Invalid syntax (21)
    additional info: objectClass: value #0 invalid per syntax

ผลลัพธ์ใน google สำหรับข้อผิดพลาดนี้ไม่ได้เป็นคำแนะนำที่เป็นประโยชน์ ฉันจะทำอะไรผิดที่นี่


จะเกิดอะไรขึ้นถ้าคุณไม่มีเส้นประในโดเมนของคุณ นั่นอาจเป็นสาเหตุ ...
นาธาน C

@NathanC จะลองเปลี่ยนมันตอนนี้ ...
hax0r_n_code

@NathanC สิ่งเดียวกัน ... posixGroupฉันเดาว่ามันไม่สามารถหา ฉันจะค้นหาobjectClasses ที่มีอยู่ได้อย่างไร
hax0r_n_code

@NathanC ฉันยังไม่มี/etc/ldap/slapd.d/ไดเรกทอรีนี้ ฉันติดตั้ง openldap จากแหล่งที่มา
hax0r_n_code

ฉันไม่คุ้นเคยกับ openldap พอที่จะตอบ ... อาจมีคนอื่นที่นี่บ้าง
นาธาน C

คำตอบ:


11

ปัญหาของคุณคือไม่ต้องสงสัยว่าคุณต้องโหลดnisสคีมาลงในเซิร์ฟเวอร์ LDAP ของคุณ วิธีการทำเช่นนี้ขึ้นอยู่กับว่าคุณกำลังใช้slapd.confไฟล์การกำหนดค่าดั้งเดิมหรือการกำหนดค่าแบบไดนามิกที่ใหม่กว่าซึ่งโฮสต์cn=configและสำรองข้อมูลโดยslapd.dไดเรกทอรี

การใช้ slapd.conf

คุณจะต้องincludeกำหนดสคีมาในของคุณslapd.confโดยเพิ่มบรรทัดตามบรรทัดของ:

include /usr/local/etc/openldap/schema/nis.schema

นี่ถือว่าnis.schemaไฟล์นั้นอยู่ที่พา ธ นั้น ถ้าไม่แก้ไขเส้นทางอย่างเหมาะสม

คุณจะต้องรีสตาร์ทslapdเพื่อเปิดใช้งานสคีมาใหม่

การใช้ slapd.d

(ฉันรวมถึงสิ่งนี้เพื่อความสมบูรณ์แม้ว่าจะไม่เกี่ยวข้องโดยตรงกับการกำหนดค่าปัจจุบันของคุณ)

การโหลดคีมาเป็นslapdถ้าคุณกำลังใช้แบบไดนามิกการกำหนดค่าที่คุณจะใช้cn=config ldapaddขึ้นอยู่กับวิธีตั้งค่า ACL ของคุณคำสั่งอาจมีลักษณะเช่นนี้:

ldapadd -Y EXTERNAL -H ldapi:// -f /usr/local/etc/openldap/schema/nis.ldif

นี้อนุมานว่าการทำงานของคุณslapdได้ใน ACL อนุญาตให้ "ข้อมูลประจำตัวของเพียร์" rootรับรองความถูกต้อง หากไม่ได้ทำงานคุณจะต้องให้เหมาะสมผูก DN และรหัสผ่านที่ใช้และ-D-W

ไม่จำเป็นต้องรีสตาร์ทในกรณีนี้


ขอขอบคุณ! ถ้าฉันดาวน์โหลดและติดตั้งรุ่นล่าสุดของopenldapทำไมจะไม่ฉันได้รับการกำหนดค่าการใช้slapd.d?
hax0r_n_code

บางทีตัวติดตั้งอาจใช้ค่าเริ่มต้นในการใช้ไฟล์กำหนดค่าดั้งเดิม ในกรณีใด ๆ เอกสารมีคำแนะนำสำหรับการแปลงจากไปslapd.conf slapd.d
larsks

คำตอบนี้เป็นเวลาที่มีประโยชน์มาก ฉันต้องเพิ่มสคีมาที่ต้องการไม่กี่ตัวเพื่อให้มันทำงานได้สำหรับฉัน ขอบคุณสำหรับคำตอบ!
Senthil Kumar

1
คุณรู้ได้อย่างไรว่าเป็น nis.schema ที่หายไปและไม่ใช่สคีอื่น ๆ คุณแยกวิเคราะห์ข้อผิดพลาดได้อย่างไร
Mike Shultz

1
ข้อผิดพลาดกำลังบ่นเกี่ยวกับ objectclass สำหรับ cn = วิศวกรซึ่งก็คือ "posixGroup" จากนี้มันค่อนข้างง่ายที่จะคิดออกซึ่ง schema ที่กำหนด objectclass
larsks

1

ฉันเพิ่งพบปัญหานี้ในขณะที่ต่อไปนี้อูบุนตู OpenLDAP เซิร์ฟเวอร์กวดวิชา แก้ไขได้โดยลบช่องว่างต่อท้ายทั้งหมดออกจากแถวของฉัน


1
ขอบคุณมากสำหรับสิ่งนี้ฉันแค่ต่อสู้กับข้อผิดพลาดนี้!
TylerDurden

1

ฉันแก้ไขการลบสิ่งfile.ldifที่ฉันต้องการเรียกเก็บใน openldap (ตัวอย่าง:) data.ldifเพราะviบางครั้งโปรแกรมแก้ไขข้อความจะแทรกอักขระที่มองไม่เห็นด้วยข้อผิดพลาดหรือข้อผิดพลาดและสิ่งนี้มีผลต่อไฟล์ ldif ของคุณ ดังนั้นลบมันออกแล้วคุณสร้างอีกอันขึ้นมาและลองอัปโหลดคำสั่งทีละคำแล้วตรวจสอบคำสั่งldapsearch -x -h nameofyourserver -b “dc=whateveris,dc=com”ลาก่อนและฉันหวังว่าจะช่วยคุณได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.