SLAPADD(8C)

✨ SLAPADD β€” the add-entries-to-your-slapd-database glow-up (section 8C, bestie) ✨

okay so real talk: you've got an LDIF file and you need it in the database. That's the whole gig. This is slapadd, part of the OpenLDAP situation, and she's about to eat. 🫢


πŸ“– NAME

slapadd β€” Add entries to a SLAPD database πŸ’–


πŸŽ€ SYNOPSIS

/usr/bin/slapadd [-b suffix] [-c] [-d debug-level] [-f slapd.conf]
[-F confdir] [-g] [-j lineno] [-l ldif-file] [-n dbnum]
[-o option[=value]] [-q] [-s] [-S SID] [-u] [-v] [-w]

she's got a lot of flags and honestly? iconic behavior. πŸ’…


πŸ’« DESCRIPTION

slapadd is your girl for shoving entries written in LDAP Directory Interchange Format (LDIF) straight into a slapd(8) database. She opens the database you point her at β€” chosen by database number or by suffix β€” and adds entries matching whatever LDIF you fed her. Databases configured as subordinate to that one get updated too, unless you pass -g. The LDIF input comes from standard input, or from a file if you said so.

All files eventually created by slapadd will belong to the identity slapadd is run as, so make sure you either run slapadd with the same identity slapd(8) will be run as (see option -u in slapd(8)), or change file ownership before running slapd(8). no cap, this one bites people. 😭

Note: slapadd will also perform the relevant indexing whilst adding the database if any are configured. For specific details, please see slapindex(8). she's multitasking, she's thriving. ✨


🌸 OPTIONS

  • -b suffix β€” Use the specified suffix to determine which database to add entries to. By default, the first database that supports the requested operation is used. The -b cannot be used in conjunction with the -n option. (pick one, bestie, they're not friends πŸ’€)
  • -c β€” enable continue (ignore errors) mode.
  • -d debug-level β€” enable debugging messages as defined by the specified debug-level; see slapd(8) for details.
  • -f slapd.conf β€” specify an alternative slapd.conf(5) file.
  • -F confdir β€” specify a config directory. If both -f and -F are specified, the config file will be read and converted to config directory format and written to the specified directory. If neither option is specified, an attempt to read the default config directory will be made before trying to use the default config file. If a valid config directory exists then the default config file is ignored. If dry-run mode is also specified, no conversion will occur.
  • -g β€” disable subordinate gluing. Only the specified database will be processed, and not its glued subordinates (if any). "not me ignoring my subordinates" πŸ™ˆ
  • -j lineno β€” Jump to the specified line number in the LDIF file before processing any entries. This allows a load that was aborted due to errors in the input LDIF to be resumed after the errors are corrected. she's giving resume-from-checkpoint energy. ⭐
  • -l ldif-file β€” Read LDIF from the specified file instead of standard input.
  • -n dbnum β€” Add entries to the dbnum-th database listed in the configuration file. The -n cannot be used in conjunction with the -b option. To populate the config database slapd-config(5), use -n 0 as it is always the first database. It must physically exist on the filesystem prior to this, however.
  • -o option[=value] β€” Specify an option with a(n optional) value. Possible generic options/values are:
syslog=<subsystems>  (see `-s' in slapd(8))
syslog-level=<level> (see `-S' in slapd(8))
syslog-user=<user>   (see `-l' in slapd(8))

schema-check={yes|no}
value-check={yes|no}
remove-sids={<sid>[,<sid>,...]}

The schema-check option toggles schema checking (default on); the value-check option toggles value checking (default off). The latter is incompatible with -q.

The remove-sids option accepts a list of sids to ignore from the file, corresponding CSNs in entryCSN and contextCSN attributes will be replaced with freshly generated CSNs using the server ID configured by -S. Using it also implies -w: overwrite syncrepl context information.

  • -q β€” enable quick (fewer integrity checks) mode. Does fewer consistency checks on the input data, and no consistency checks when writing the database. Improves the load time but if any errors or interruptions occur the resulting database will be unusable.
⚠️ like, unusable unusable. speedrun at your own risk. πŸ’€
  • -s β€” disable schema checking. This option is intended to be used when loading databases containing special objects, such as fractional objects on a partial consumer. Loading normal objects which do not conform to schema may result in unexpected and ill behavior.
  • -S SID β€” Server ID to use in generated entryCSN. Also used for contextCSN if -w is set as well. Defaults to 0.
  • -u β€” enable dry-run (don't write to backend) mode.
  • -v β€” enable verbose mode.
  • -w β€” (over)write syncrepl context information. After all entries are added, the contextCSN will be updated with the greatest CSN in the database. Only use to load a fresh seed provider.

🚧 LIMITATIONS

Your slapd(8) should not be running when you do this to ensure consistency of the database. fr fr, shut her down first. πŸ›‘

slapadd may not provide naming or schema checks. It is advisable to use ldapadd(1) when adding new entries into an existing directory.


🌈 EXAMPLES

To import the entries specified in file ldif into your slapd(8) database give the command:

/usr/bin/slapadd -l ldif

one line. one command. main character energy. πŸ‘‘


πŸ‘€ SEE ALSO

ldap(3), ldif(5), slapcat(8), slapindex(8), slapmodify(8), ldapadd(1), slapd(8)

"OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/)


πŸ’œ 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!! πŸ¦‹ this was OpenLDAP 2.7.2, dated 2026/10/21, living in section 8C as SLAPADD(8C). go populate that database and slay responsibly. mwah πŸ’…βœ¨

πŸ“¦ where this page comes from