Mengapa perintah ldapadd ini berhenti dengan kesalahan "Sintaks tidak valid"?

15

Saya sangat baru untuk openldap tetapi sangat berpengalaman dalam lingkungan linux / unix. Saya mencoba untuk mengatur lingkungan openldap pengujian pertama saya menggunakan panduan di sini . Saya juga sudah membaca sebagian besar panduan admin di sini dan harus saya akui, ini banyak yang bisa diterima.

Jadi mengikuti panduan pengaturan dasar ubuntu saya membuat file ldif yang terlihat seperti ini:

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

Setiap kali saya mencoba menambahkannya menggunakan:

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

Saya mendapatkan kesalahan berikut:

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

Hasil di google untuk kesalahan ini tidak bersih saran membantu Apa yang bisa saya lakukan salah di sini?

hax0r_n_code
sumber
Apa yang terjadi jika Anda tidak memiliki tanda hubung di domain Anda? Itu bisa menyebabkannya ...
Nathan C
@NathanC akan mencoba mengubahnya sekarang ...
hax0r_n_code
@NathanC hal yang sama ... tebakan saya adalah tidak dapat menemukan posixGroup. Bagaimana saya mencari objectClasses yang tersedia ?
hax0r_n_code
@NathanC juga saya tidak punya /etc/ldap/slapd.d/direktori ini . Saya menginstal openldap dari sumber.
hax0r_n_code
Saya tidak cukup akrab dengan openldap untuk menjawab ... mungkin ada orang lain di sini.
Nathan C

Jawaban:

12

Masalah Anda tidak diragukan lagi bahwa Anda perlu memuat nisskema ke server LDAP Anda. Cara melakukannya tergantung pada apakah Anda menggunakan slapd.conffile konfigurasi lawas atau konfigurasi dinamis yang lebih baru yang dihosting di cn=configdan didukung oleh slapd.ddirektori.

Menggunakan slapd.conf

Anda akan perlu untuk includedefinisi skema di Anda slapd.confdengan menambahkan garis di sepanjang baris:

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

Ini mengasumsikan bahwa nis.schemafile tersebut terletak di jalur itu; jika tidak, modifikasi jalur dengan tepat.

Anda harus memulai ulang slapduntuk mengaktifkan skema baru.

Menggunakan slapd.d

(Saya menyertakan ini untuk kelengkapan, meskipun tidak secara langsung relevan dengan konfigurasi Anda saat ini).

Untuk memuat skema ke dalam slapdjika Anda menggunakan cn=configkonfigurasi dinamis , Anda akan menggunakan ldapadd. Bergantung pada bagaimana ACL Anda dikonfigurasi, perintahnya mungkin terlihat seperti ini:

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

Ini mengasumsikan bahwa menjalankan Anda slapdmemiliki ACL yang mengizinkan otentikasi "peer credentials" root. Jika itu tidak berhasil, Anda harus memberikan DN mengikat dan kata sandi yang sesuai menggunakan -Ddan -W.

Tidak diperlukan restart dalam kasus ini.

larsks
sumber
Terima kasih! Jika saya mengunduh dan menginstal versi terbaru openldapmengapa saya tidak dikonfigurasikan untuk digunakan slapd.d?
hax0r_n_code
Mungkin installer default menggunakan file konfigurasi lawas? Bagaimanapun dokumentasi memiliki instruksi untuk mengkonversi dari slapd.confke slapd.d.
larsks
Jawaban ini adalah waktu yang sangat membantu. Saya harus menambahkan beberapa skema yang diperlukan untuk membuatnya bekerja untuk saya. Terima kasih atas jawabannya!
Senthil Kumar
1
Bagaimana Anda tahu itu adalah nis.schema yang hilang dan bukan skema lainnya? Bagaimana Anda mengurai kesalahan?
Mike Shultz
1
Kesalahannya adalah mengeluh tentang objectclass untuk cn = engineer, yang merupakan "posixGroup". Dari sini relatif mudah untuk mengetahuinya di mana skema yang objectclass didefinisikan.
larsks
1

Saya baru-baru ini mengalami masalah ini saat mengikuti tutorial Ubuntu OpenLDAP Server . Mengatasinya dengan menghapus semua spasi putih dari baris saya.

jamzsabb
sumber
1
Terima kasih banyak untuk ini, saya hanya berjuang dengan kesalahan ini!
TylerDurden
1

Saya memperbaikinya menghapus file.ldifyang saya ingin isi dalam openldap (misalnya:) data.ldifkarena editor teks vikadang-kadang memasukkan karakter tidak terlihat oleh kesalahan atau bug dan ini mempengaruhi file ldif Anda. Jadi hapus dan Anda buat satu lagi dan coba unggah setiap pernyataan satu per satu dan periksa dengan perintah ldapsearch -x -h nameofyourserver -b “dc=whateveris,dc=com”, selamat tinggal dan saya berharap dapat membantu Anda dengan ini.

hansel1
sumber