Kesalahan no global superior knowledge
berarti bahwa slapd
tidak tahu di mana harus meletakkan entri baru Anda. Ini biasanya berarti bahwa Anda belum mendefinisikan database yang sesuai. Dengan sistem yang lebih baru (yang menggunakan cn=config
bukan slapd.conf
), Anda biasanya akan menambahkan database baru atau memodifikasi entri database yang ada menggunakan ldapadd
atau ldapmodify
. Misalnya, pada sistem Fedora 17 saya, instalasi default menyiapkan database seperti ini untuk hosting dc=my-domain,dc=com
:
dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
creatorsName: cn=config
olcSuffix: dc=my-domain,dc=com
olcRootDN: cn=Manager,dc=my-domain,dc=com
Untuk meng-host organisasi Anda ( o=myorganization, c=fr
), saya perlu membuat file LDIF berikut:
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: o=myorganization, c=fr
-
replace: olcRootDN
olcRootDN: cn=Manager,o=myorganization,c=fr
-
replace: olcAccess
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write
by dn.base="cn=Manager,o=myorganization,c=fr" write
by * none
Dan saya akan memuat modifikasi ini seperti ini:
ldapmodify -Y EXTERNAL -H ldapi:/// -f mychanges.ldif
Ini berfungsi karena olcAccess
baris - baris berikut sudah ada dalam konfigurasi:
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
by * none
Ini memberikan root
, menghubungi slapd
melalui ldapi:///
soket, akses bebas kata sandi ke cn=config
pohon.
Saya kemudian akan memuat entri tingkat atas saya:
dn: o=myorganization, c=fr
objectclass: organization
o: myorganization
Dengan menjalankan:
ldapadd -Y EXTERNAL -H ldapi:/// -f myobject.ldif
Ini berfungsi karena saya telah menambahkan ACL serupa ke database ini. Perhatikan bahwa saya tidak perlu memulai dengan di c=fr
sini, karena basis data didefinisikan untuk menampungo=myorganization,c=fr
ldapadd
alih-alihldapmodify
, dan gunakan catatan yang ada sebagai model.olcAccess
) & perintah yang saya gunakan ... tetapi jika Anda ingin mengeditnya dengan salin / tempel dari balasan saya, saya dapat menandainya diterima & hapus milikku :)Berkat jawaban larsks , inilah yang saya lakukan.
Pertama di sini adalah ekstrak dari konfigurasi default dengan Ubuntu 12.04 (file
/etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif
):Jadi saya membuat yang berikut ini
change_suffix.ldif
:dan menambahkannya ke ldap saya dengan perintah berikut:
Sekarang saya harus membuat simpul organisasi dengan yang berikut
myorganization.ldif
:Dan akhirnya tambahkan dengan perintah berikut (yang pertama tidak berhasil karena
Insufficient access (50)
):Sekarang saya bisa menambahkan unit organisasi:
sumber
dn: olcDatabase={1}hdb,cn=config
adalah kunci bagi saya, terima kasih