Tại sao lệnh ldapadd này thoát khỏi lỗi Cú pháp Cú pháp không hợp lệ?


15

Tôi rất mới với openldap nhưng cực kỳ thành thạo trong môi trường linux / unix. Tôi đang cố gắng thiết lập môi trường openldap thử nghiệm đầu tiên của mình bằng hướng dẫn ở đây . Tôi cũng đã đọc hầu hết các hướng dẫn quản trị viên ở đây và tôi phải thừa nhận, nó là rất nhiều để đưa vào.

Vì vậy, theo hướng dẫn thiết lập cơ bản của Ubuntu, tôi đã tạo một tệp ldif trông như thế này:

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

Bất cứ khi nào tôi cố gắng thêm nó bằng cách sử dụng:

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

Tôi nhận được lỗi sau đây:

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

Các kết quả trong google cho lỗi này không có bất kỳ đề xuất hữu ích nào. Tôi có thể làm gì sai ở đây?


Điều gì xảy ra nếu bạn không có dấu gạch ngang trong miền của mình? Điều đó có thể gây ra nó ...
Nathan C

@NathanC sẽ thử thay đổi ngay bây giờ ...
hax0rettcode

@NathanC điều tương tự ... tôi đoán là nó không thể tìm thấy posixGroup. Làm thế nào để tôi truy vấn cho objectClasses có sẵn ?
hax0rettcode

@NathanC tôi cũng không có /etc/ldap/slapd.d/thư mục này . Tôi đã cài đặt openldap từ nguồn.
hax0rettcode

Tôi không đủ quen thuộc với openldap để trả lời ... mặc dù có thể có người khác ở đây.
Nathan C

Câu trả lời:


12

Vấn đề của bạn chắc chắn là bạn cần tải nislược đồ vào máy chủ LDAP của mình. Cách thực hiện việc này tùy thuộc vào việc bạn đang sử dụng slapd.conftệp cấu hình cũ hay cấu hình động mới hơn được lưu trữ trong cn=configvà được hỗ trợ bởi một slapd.dthư mục.

Sử dụng slapd.conf

Bạn sẽ cần includeđịnh nghĩa lược đồ trong slapd.confbằng cách thêm một dòng dọc theo dòng:

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

Điều này giả định rằng nis.schematập tin được đặt tại đường dẫn đó; nếu không, sửa đổi đường dẫn một cách thích hợp.

Bạn sẽ cần phải khởi động lại slapdđể kích hoạt lược đồ mới.

Sử dụng slapd.d

(Tôi bao gồm điều này để hoàn thiện, mặc dù nó không liên quan trực tiếp đến cấu hình hiện tại của bạn).

Để tải một lược đồ vào slapdnếu bạn đang sử dụng cn=configcấu hình động , bạn sẽ sử dụng ldapadd. Tùy thuộc vào cách ACL của bạn được cấu hình, lệnh có thể trông như thế này:

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

Điều này giả định rằng việc chạy của bạn slapdcó xác thực ACL cho phép xác thực "thông tin ngang hàng" root. Nếu điều đó không hiệu quả, bạn sẽ cần cung cấp một mật khẩu và mật khẩu ràng buộc thích hợp bằng cách sử dụng -D-W.

Không có yêu cầu khởi động lại trong trường hợp này.


Cảm ơn bạn! Nếu tôi đã tải xuống và cài đặt phiên bản mới nhất openldaptại sao tôi sẽ không được định cấu hình để sử dụng slapd.d?
hax0rettcode

Có lẽ trình cài đặt mặc định sử dụng tệp cấu hình cũ? Trong mọi trường hợp, tài liệu có hướng dẫn để chuyển đổi từ slapd.confsang slapd.d.
larsks

Câu trả lời này là thời gian rất hữu ích. Tôi đã phải thêm một vài lược đồ cần thiết để làm cho nó hoạt động. Cảm ơn câu trả lời!
Senthil Kumar

1
Làm thế nào bạn biết đó là nis.schema bị thiếu và không phải là một lược đồ khác? Làm thế nào bạn phân tích lỗi?
Mike Shultz

1
Lỗi là phàn nàn về lớp đối tượng cho cn = kỹ sư, đó là "posixgroup". Từ đó, tương đối dễ dàng để tìm ra lược đồ mà lớp đối tượng được xác định.
larsks


1

Tôi sửa nó xóa cái file.ldifmà tôi muốn sạc trong openldap (ví dụ data.ldif:) vì trình soạn thảo văn bản viđôi khi chèn ký tự vô hình do lỗi hoặc lỗi và điều này ảnh hưởng đến tệp ldif của bạn. Vì vậy, xóa nó và bạn tạo một cái khác và cố gắng tải lên từng câu một và kiểm tra bằng lệnh ldapsearch -x -h nameofyourserver -b “dc=whateveris,dc=com”, tạm biệt và tôi hy vọng sẽ giúp bạn với điều này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.