SLAPD.PLUGIN(5)

πŸ’… SLAPD.PLUGIN(5) β€” the plugin tea, section 5 of the File Formats Manual

okay bestie, pull up a chair, this is slapd.plugin(5) β€” the manual page all about plugin configuration for slapd, the stand-alone LDAP daemon ✨


πŸŽ€ SYNOPSIS

/etc/openldap/slapd.conf

that's it. that's the whole vibe check. one file. πŸ’–


🌸 DESCRIPTION

so <pink>slapd.conf(5)</pink> is the file that holds all the config info for the <purple>slapd(8)</purple> daemon, and β€” plot twist β€” the SLAPD tools slapadd(8), slapcat(8), slapmodify(8) and slapindex(8) use that same config file too. they're all sharing one brain cell and honestly? iconic. 🫢

slapd.conf is built like this: a bunch of global config options that apply to slapd as a whole (every backend included, no exceptions), and then zero or more database backend definitions with all the info that's specific to one backend instance. zero is allowed, she's flexible πŸ’β™€οΈ

the general format of slapd.conf is:

# comment - these options apply to every database
<global configuration options>
# first database definition & configuration options
database    <backend 1 type>
<configuration options specific to backend 1>
# subsequent database definitions & configuration options
...

if slapd is compiled with --enable-slapi, you get support for plugins that follow Netscape's Directory Server Plug-Ins. right now version 4 of the API is implemented, plus some extensions from version 5. partial upgrade era, we love a work in progress 😌

both global data and database-specific data can carry plugin info. and here's the important little detail: plugins tied to a specific database get called before the global plugins. database-specific girlies go first, periodt.

this manpage is specifically about the slapd(8) config statements that control the loading of SLAPI plugins. 🧚

anything that's supposed to be swapped out for your actual text shows up in angle brackets <>. so don't type the brackets, type the thing. πŸ’€

the structure of the plugin directives is:

plugin <type> <lib_path> <init_function> [<arguments>]

and that directive means: load a plugin of the specified type for the current database. let's break it all the way down πŸ“

  • the <type> can be one of four things:
    • preoperation β€” runs before the operation for the specified database gets processed
    • postoperation β€” runs after the operation for the specified database has been processed
    • extendedop β€” used when executing an extended operation
    • object β€” the miscellaneous one, for stuff like ACL, computed attribute and search filter rewriter plugins ✨
  • the <libpath> argument is the path to the plugin loadable object. if you hand it a relative path, the object gets searched for according to whatever underlying dynamic loading package is doing the work (it's libtool's ltdl that's used, fyi). πŸ¦‹
  • the <init_function> argument says which symbol has to be called when the plugin is first loaded. this function is the one that should register the functions the plugin provides for the desired operations. and ngl this part is the plot twist: it's this init function, not the plugin type you passed as the first argument, that decides when and for what operations the plugin actually gets invoked. the plugin type is not the boss here, the init function is πŸ‘‘ the optional <arguments> list gets passed to the init function.
  • pluginlog <file> β€” sets an alternative path for the plugin log file. the default is /var/lib/openldap/errors. πŸ“
  • modulepath <pathspec> β€” this one sets the module load path for dynamically loadable backends, same as described in slapd.conf(5). but here's the tea: since the dynamically loadable backends and the SLAPI plugins both ride on the same underlying library (libtool's ltdl), its value affects the plugin search path too. in general the search path is made of colon-separated paths, and usually it goes like this: the user-defined path is searched first, then the value of the LTDL_LIBRARY_PATH environment variable (if it's defined) is used, and finally the system-specific dynamic load path gets attempted (on Linux, for example, that's the value of the LD_LIBRARY_PATH environment variable). please, please actually read the documentation of ltdl, because its behaviour is very platform dependent. like, not a little. very. 😭

πŸ“ FILES

  • /etc/openldap/slapd.conf β€” default slapd configuration file πŸ’–
  • /var/lib/openldap/errors β€” default plugin log file 🫢

πŸ‘€ SEE ALSO


🌈 ACKNOWLEDGEMENTS

OpenLDAP Software is developed and maintained by The OpenLDAP Project <http://www.openldap.org/>. OpenLDAP Software is derived from the University of Michigan LDAP 3.3 Release.


and that's the whole page, bestie β€” no cap, you're now certified in SLAPI plugin config πŸ’… this was OpenLDAP 2.7.2, dated 2026/10/21, and yes she ate. mwah πŸŽ€βœ¨πŸ’œ

πŸ“¦ where this page comes from