Hi Andrew -
I unsubscribe to the openldap-software@openldap.org, but subscribe again today. I thought I had this ACL figured out.
I'm trying to have users be able to add entries and to access their own address book. I think I have a pretty good start so far, but I'm having difficulty adding entries that only authenticated users have access to. I can add entries using "cn=root,dc=university,dc=edu" without any problems. Right now I have two users, but I'm confused as to how I get entries into their address book. Attached are both my init.ldif, and the slapd.conf I'm using.
Any help is appreciated.
My init.ldif
# # Initialize the suffix entry defined in slapd.conf # dn: dc=University,dc=edu objectclass: top objectclass: dcObject objectclass: organization dc: university o: office
# # Initialize the AddressBooks heirarchy # dn: ou=AddressBooks,dc=University,dc=edu objectclass: top objectclass: organizationalUnit ou: AddressBooks
# # Define individual address books # dn: o=me,ou=AddressBooks,dc=University,dc=edu objectclass: top objectclass: organization o: me
dn: o=you,ou=AddressBooks,dc=University,dc=edu objectclass: top objectclass: organization o: you
# # Initialize the Users heirarchy # dn: ou=Users,dc=University,dc=edu objectclass: top objectclass: organizationalUnit ou: Users
# # Define individual users # dn: cn=me,ou=Users,dc=University,dc=edu objectclass: top objectclass: person cn: me sn: Person userPassword: {crypt}XXXXXXX
dn: cn=you,ou=Users,dc=University,dc=edu objectclass: top objectclass: person cn: you sn: Lastname userPassword: {crypt}XXXXXXX
My slapd.conf...
# # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/inetorgperson.schema
# Define global ACLs to disable default read access.
# Do not enable referrals until AFTER you have a working directory # service AND an understanding of referrals. #referral ldap://root.openldap.org
pidfile /usr/local/var/run/slapd.pid argsfile /usr/local/var/run/slapd.args
# Load dynamic backend modules: # modulepath /usr/local/libexec/openldap # moduleload back_bdb.la # moduleload back_ldap.la # moduleload back_ldbm.la # moduleload back_passwd.la # moduleload back_shell.la
# Sample security restrictions # Require integrity protection (prevent hijacking) # Require 112-bit (3DES or better) encryption for updates # Require 63-bit encryption for simple bind # security ssf=1 update_ssf=112 simple_bind=64
# Sample access control policy: # Root DSE: allow anyone to read it # Subschema (sub)entry DSE: allow anyone to read it # Other DSEs: # Allow self write access # Allow authenticated users read access # Allow anonymous users to authenticate # Directives needed to implement policy: # # # Allow users to authenticate access to attrs=userPassword by self write by anonymous auth
# Allow authenticated users access to their own address book access to dn.regex="o=(.+),ou=AddressBooks,dc=University,dc=edu" by users.expand="cn=$1,ou=Users,dc=University,dc=edu" write
# Allow authenticated users to read the resource to which # they have access by logging in with an empty Bind DN access to dn.base="ou=AddressBooks,dc=University,dc=edu" by * read access to dn.base="" by * read
# Allow authenticated users to read the Subschema of the # resources to which they have access access to dn.base="cn=Subschema" by * read
# Disallow anonymous access (binds) # With this policy in effect, unathenticated users receive a response of # Error 48: Inappropiate authentication disallow bind_anon # if no access controls are present, the default policy # allows anyone and everyone to read anything but restricts # updates to rootdn. (e.g., "access to * by * read") # # rootdn can always read and write EVERYTHING!
####################################################################### # BDB database definitions #######################################################################
database bdb suffix "dc=University,dc=edu" rootdn "cn=root,dc=University,dc=edu" # Cleartext passwords, especially for the rootdn, should # be avoid. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw secret # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory /usr/local/var/openldap-data # Indices to maintain index objectClass eq
Thanks ------------------- david stackis uc santa barbara