Lỗi no global superior knowledge
có nghĩa là slapd
không biết nơi để đặt mục nhập mới của bạn. Điều này thường có nghĩa là bạn chưa xác định một cơ sở dữ liệu thích hợp. Với các hệ thống mới hơn (hệ thống sử dụng cn=config
thay vì slapd.conf
), trước tiên bạn thường sẽ thêm cơ sở dữ liệu mới hoặc sửa đổi mục nhập cơ sở dữ liệu hiện có bằng cách sử dụng ldapadd
hoặc ldapmodify
. Ví dụ: trên hệ thống Fedora 17 của tôi, cài đặt mặc định sẽ thiết lập cơ sở dữ liệu như thế này để lưu trữ 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
Để lưu trữ tổ chức của bạn ( o=myorganization, c=fr
), tôi cần tạo tệp LDIF sau:
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
Và sau đó tôi sẽ tải những sửa đổi như thế này:
ldapmodify -Y EXTERNAL -H ldapi:/// -f mychanges.ldif
Điều này hoạt động vì các olcAccess
dòng sau đã có trong cấu hình:
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
Cấp này root
, liên hệ slapd
qua ldapi:///
ổ cắm, truy cập mật khẩu miễn phí vào cn=config
cây.
Sau đó tôi sẽ tải vào mục cấp cao nhất của mình:
dn: o=myorganization, c=fr
objectclass: organization
o: myorganization
Bằng cách chạy:
ldapadd -Y EXTERNAL -H ldapi:/// -f myobject.ldif
Điều này hoạt động vì tôi đã thêm một ACL tương tự vào cơ sở dữ liệu này. Lưu ý rằng tôi không cần phải bắt đầu c=fr
ở đây, vì cơ sở dữ liệu được xác định để giữo=myorganization,c=fr