systemd-userdbd is a system service that multiplexes user/group lookups to all local services that
provide JSON user/group record definitions to the system. In addition it synthesizes JSON user/group
records from classic UNIX/glibc NSS user/group records in order to provide full backwards compatibility.
It may also pick up statically defined JSON user/group records from files in /etc/userdb/, /run/userdb/,
/run/host/userdb/ and /usr/lib/userdb/ with the ".user" extension.
Most of systemd-userdbd's functionality is accessible through the userdbctl(1) command.
The user and group records this service provides access to follow the JSONUserRecords[1] and JSONGroupRecord[2] definitions. This service implements the User/GroupRecordLookupAPIviaVarlink[3], and
multiplexes access other services implementing this API, too. It is thus both server and client of this
API.
This service provides three distinct Varlink[4] services: io.systemd.Multiplexer provides a single,
unified API for querying JSON user and group records. Internally it talks to all other user/group record
services running on the system in parallel and forwards any information discovered. This simplifies
clients substantially since they need to talk to a single service only instead of all of them in
parallel. io.systemd.NameServiceSwitch provides compatibility with classic UNIX/glibc NSS user records,
i.e. converts structpasswd and structgroup records as acquired with APIs such as getpwnam(1) to JSON
user/group records, thus hiding the differences between the services as much as possible.
io.systemd.DropIn makes JSON user/group records from the aforementioned drop-in directories available.