To setup a basic LDAP server with Unix user management, we will need the following
awesome.comldap.awesome.compkg install openldap26-server
Please keep in mind that the version may change in the future, e.g. openldap27-server. You can run pkg search openldap to find the latest version.
Start by modifying /usr/local/etc/openldap/ldap.conf, and use the following inside:
BASE dc=awesome,dc=com URI ldap://ldap.awesome.com
Next, edit /usr/local/etc/openldap/slapd.conf and modify/set the following:
core.schema:include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/nis.schema
moduleload back_ldapconfig database:rootpw VerySecretAutoGeneratedPassword
suffix and rootdn for the mdb database:suffix "dc=awesome,dc=com" rootdn "cn=admin,dc=awesome,dc=com"
mdb database using slappasswd utility:rootpw {SSHA}TheOutputOfSlapPasswd
Finally, edit /usr/local/etc/openldap/slapd.ldif and modify the following inside:
olcSuffix and olcRootDN:olcSuffix: dc=awesome,dc=com olcRootDN: cn=admin,dc=awesome,dc=com
olcRootPW:olcRootPW: {SSHA}TheOutputOfSlapPasswd
LDAPScripts is a collection of scripts to manage POSIX accounts in an OpenLDAP directory.
pkg install ldapscripts
Edit file /usr/local/etc/ldapscripts/ldapscripts.conf and modify the following:
SERVER:SERVER="ldap://ldap.awesome.com"
SUFFIX:SUFFIX="dc=awesome,dc=com"
BINDDN:BINDDN="cn=admin,dc=awesome,dc=com"
GIDSTART="15000" # Group ID UIDSTART="10000" # User ID MIDSTART="20000" # Machine ID
UHOMES as needed.PASSWORDGEN, as some FreeBSD versions don't run properly without env:PASSWORDGEN="cat /dev/urandom | env LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c18"
iconv and charset:ICONVBIN="/usr/bin/iconv" ICONVCHAR="ISO-8859-15"
Done!
We can finally initialize the LDAP directory with Unix data by running
ldapinit
Make sure that ldap.awesome.com is reachable via ICMP. You can check by running ping -t4 ldap.awesome.com. If you haven't configured DNS yet, you may want to modify /etc/hosts.
Say we want to have a group named admins for administrators and a user named john, that should be a member of administrators.
ldapaddgroup admins ldapaddgroup john 10000 ldapadduser john john ldapaddusertogroup john admins
And we can check by using ldapid:
# ldapid john uid=10000(john) gid=10000(john) groups=10000(john),15000(admins)
* Add SSL/TLS Encryption.