====== Utils ====== * OpenLDAP + phpLDAPAdmin Docker * Tags: [[https://hub.docker.com/r/osixia/openldap/tags/|osixia/openldap:1.2.1]] * Latest release: 1.2.1 - OpenLDAP 2.4.44 * Readme:[[https://github.com/osixia/docker-openldap|github]] * [[https://github.com/osixia/docker-openldap/blob/stable/example/docker-compose.yml|docker-compose.yml]] * OpenLDAP Backup [[https://github.com/osixia/docker-openldap-backup]] * [[http://directory.apache.org/studio/download/download-linux.html|Apache Directory Studio]] * LDAP Account Manager * Docker: https://hub.docker.com/r/mwaeckerlin/lam/ * docker run -d -p 8123:80 --name lam mwaeckerlin/lam * goto **LAM configuration** / **Edit general settings**, login with default password **lam** and Change master password. Then go back and still with password lam go to Edit server profiles to setup your OpenLDAP * user: Manager, password: lam ====== cn=config ====== Historically OpenLDAP has been statically configured, that is, to make a change to the configuration the slapd.conf file was modified and slapd stopped and started. In the case of larger users this could take a considerable period of time and had become increasingly unacceptable as an operational method. Typically in your OpenLDAP installation you have at least two trees: * One is the DIT ("data information tree") where you enter your nodes * access by "cn=admin,dc=example,dc=org" * default password "admin" * One is **cn=config**, where the configuration information is put (which can be manipulated with just the same LDAP commands, as itself is setup as a DIT!). * access by "cn=admin,cn=config" * default password "config" * **BaseDN: 'cn=config'** - use [[http://directory.apache.org/studio/|Apache Directory Studio]] to connect ===== ACL ===== [[https://www.openldap.org/doc/admin24/access-control.html]] Order matters in ACL rules. LDAP will stop looking on the first match. So new acl entries should be inserted before default ones. Default entries: olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by dn="cn=admin,dc=example,dc=org" write by anonymous auth by * none olcAccess: {1}to * by self read by dn="cn=admin,dc=example,dc=org" write by * none * olcAccess: {0}to attrs=userPassword,shadowLastChange * by self write * by dn="cn=admin,dc=example,dc=org" write * by anonymous auth * by * none * olcAccess: {1}to * * by self read * by dn="cn=admin,dc=example,dc=org" write * by * none Giving user: **uid=nextcloudsystemuser,ou=it,dc=grinn-global,dc=com** rights: * Entry to edit: **olcDatabase={1}mdb,cn=config** * Attribute to add: **olcAccess** * to by dn.exact="uid=nextcloudsystemuser,ou=it,dc=grinn-global,dc=com" read ==== Examples ==== olcAccess: {1}to dn.base="" by * read * Give user access to modify photo: olcAccess: to attrs=jpegPhoto by self write by * read