To setup a basic LDAP server with Unix user management, we will need the following * %%OpenLDAP%% as an LDAP Server * [[https://www.freshports.org/net/ldapscripts/|ldapscripts]] to manage Unix users in LDAP ==== Assumptions ==== * Your company domain is ''%%awesome.com%%'' * Your LDAP server sits at ''%%ldap.awesome.com%%'' ===== Installing LDAP ===== pkg 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. ===== Configuring LDAP ===== 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: * Append the following after ''%%core.schema%%'': include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/nis.schema * Uncomment ''%%moduleload back_ldap%%'' * Set a root password for the ''%%config%%'' database: rootpw VerySecretAutoGeneratedPassword * Set the ''%%suffix%%'' and ''%%rootdn%%'' for the ''%%mdb%%'' database: suffix "dc=awesome,dc=com" rootdn "cn=admin,dc=awesome,dc=com" * Set the root password for the ''%%mdb%%'' database using ''%%slappasswd%%'' utility: rootpw {SSHA}TheOutputOfSlapPasswd Finally, edit ''%%/usr/local/etc/openldap/slapd.ldif%%'' and modify the following inside: * Set ''%%olcSuffix%%'' and ''%%olcRootDN%%'': olcSuffix: dc=awesome,dc=com olcRootDN: cn=admin,dc=awesome,dc=com * Set ''%%olcRootPW%%'': olcRootPW: {SSHA}TheOutputOfSlapPasswd ===== Installing LDAPScripts ===== LDAPScripts is a collection of scripts to manage POSIX accounts in an %%OpenLDAP%% directory. pkg install ldapscripts ===== Configuring LDAPScripts ===== Edit file ''%%/usr/local/etc/ldapscripts/ldapscripts.conf%%'' and modify the following: * Set ''%%SERVER%%'': SERVER="ldap://ldap.awesome.com" * Set ''%%SUFFIX%%'': SUFFIX="dc=awesome,dc=com" * Set ''%%BINDDN%%'': BINDDN="cn=admin,dc=awesome,dc=com" * (Personal Preference) Start the UID from 10000, GID from 15000, MID from 20000: GIDSTART="15000" # Group ID UIDSTART="10000" # User ID MIDSTART="20000" # Machine ID * Set the home directory and default shell. If you're planning on using [[/NFSHome|NFSHome]], then make sure that you modify ''%%UHOMES%%'' as needed. * Fix ''%%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" * Set the correct path of ''%%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 **pingable?** 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|DNS]] yet, you may want to modify ''%%/etc/hosts%%''. ===== Using LDAPScripts ===== 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) ===== Next Steps ===== Next, you might want to: * Configure LDAP client using [[/SSSD|SSSD]] * Use [[/AutoFS|AutoFS]] with [[/NFS]] shares and [[/SSSD|SSSD]] for authentication ---- ===== TODO ===== * Add SSL/TLS Encryption.