Jonas_m schrieb:
Was meinst du mit newlines? Jede Änderung sollte formatiert sein wie oben, zwischen zwei solchen Blöcken eine Leerzeile, ja. Zu beachten, was bei dir für eine ACL (acces .... ) über mehrere Zeilen aufgeteilt ist, sollte in der LDIF alles in einer Zeile stehen.
access to dn.one="ou=private,ou=addressbook,dc=sanojrereiz,dc=de" attrs=userPassword
by dn="addressbookUser,ou=addressbook,dc=sanojrereiz,dc=de" write
by anonymous auth
by self write
by * none
wird zu
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {x}to dn.one="ou=private,ou=addressbook,dc=sanojrereiz,dc=de" attrs=userPassword by dn="addressbookUser,ou=addressbook,dc=sanojrereiz,dc=de" write by anonymous auth by self write by * none
Jonas_m schrieb:
Ja, das ist die Reihenfolge der ACL. Wie in der slapd.conf die genaue geschriebene Reihenfolge zählt, zählt diese auch bei der Onlinekonfiguration. {0} ist die erste beachtete Regel und wenn diese nicht greift, wird die nächste abgefragt. Darum fängt man von der spezifischten an und wird immer allgemeiner. Manchmal geht das nicht ganz so einfach, dafür gibt es dann break. Ein Blick in http://www.openldap.org/doc/admin24/access-control.html Punkt 8.3 sollte Pflicht sein.
Jonas_m schrieb:
Nein dies bestimmt nicht den Zugriff auf die config DN, sondern auf deinen eigentliche DN. olcDatabase={1}hdb,cn=config liegen alle Einstellungen die für dein Verzeichnis (dc=example,dc=com or whatever) wichtig sind. Dafür gelten auch die ACL. Meine gepostete Regel erlaubt anonymen Lesezugriff von localhost aus, sollte man generellen anonymen Lesezugriff (bei privaten Verzeichnissen immer) verboten haben.
Beispiel so meine Regeln vorher, ziemliche Standardregeln. {0}Nur der User selbst und der Admin dürfen dessen Passwort ändern. {1} dient nur dazu, auszulesen welche DIT am Server vorhande sind, sollte man so lassen. {2} erlaubt den Admin alles zu modifzieren, die User dürfen nur lesen und anonym geht nichts.
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=example,dc=com" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=example,dc=com" write by users read by anonymous auth by * none
Will ich jetzt anonymen Lesezugriff von localhost erlauben, füge ich mein obiges LDIF ein (jedoch hier mit {2} anstatt {3}). Das break dient dazu, das die nachfolgende Regel dann trotzdem beachtet wird.