SYSTEMD-USERDBD.SERVICE(8)

πŸ’– NAME πŸ’–

systemd-userdbd.service, systemd-userdbd β€” bestie, it's the JSON User/Group Record Query Multiplexer/NSS Compatibility situation ✨


🌸 SYNOPSIS 🌸

systemd-userdbd.service

/usr/lib/systemd/systemd-userdbd

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so systemd-userdbd is a system service and its whole personality is multiplexing user/group lookups πŸ’… like, it takes every local service that offers JSON user/group record definitions to your system and it puts them all on one group call. no cap.

and because it loves you and wants full backwards compatibility, it also synthesizes JSON user/group records straight out of classic UNIX/glibc NSS user/group records 🫢 iconic behaviour tbh.

it can also pick up statically defined JSON user/group records from files chilling in these directories:

  • /etc/userdb/
  • /run/userdb/
  • /run/host/userdb/
  • /usr/lib/userdb/

…as long as they have the .user or .group extension πŸŽ€ and for more deets on those extensions, go read the nss-systemd(8) manpage, bestie.

ngl, most of systemd-userdbd's functionality is accessible through the userdbctl(1) command β€” that's your shortcut πŸ‘‘

the user and group records this service hands you follow the JSON User Records[1] and JSON Group Record[2] definitions. this service implements the User/Group Record Lookup API via Varlink[3], and it also multiplexes access to other services implementing this same API, too. so it's literally both server and client of this API β€” main character energy on both sides of the convo 😭✨

and this service provides three distinct Varlink[4] services, periodt:

  • io.systemd.Multiplexer β€” gives you a single, unified API for querying JSON user and group records 🌈 internally it talks to all the other user/group record services running on the system in parallel and forwards any information it discovers. this simplifies clients so much, like, they only have to talk to one single service instead of all of them in parallel. obsessed.
  • io.systemd.NameServiceSwitch β€” gives you compatibility with classic UNIX/glibc NSS user records πŸ’€ i.e. it converts struct passwd and struct group records as acquired with APIs such as getpwnam(1) into JSON user/group records, thus hiding the differences between the services as much as possible. so sneaky, so helpful.
  • io.systemd.DropIn β€” makes JSON user/group records from the aforementioned drop-in directories available πŸ“ easy.

πŸ‘€ SEE ALSO πŸ‘€

systemd(1), nss-systemd(8), userdbctl(1), systemd-homed.service(8)


πŸŽ€ NOTES πŸŽ€

  1. JSON User Records β€” https://systemd.io/USER_RECORD
  2. JSON Group Record β€” https://systemd.io/GROUP_RECORD
  3. User/Group Record Lookup API via Varlink β€” https://systemd.io/USER_GROUP_API
  4. Varlink β€” https://varlink.org/

and that's the whole page, bestie!! βœ¨πŸ’– this was systemd 262.1, page SYSTEMD-USERDBD.SERVICE(8) πŸ¦‹ go query some records, you ate πŸ’…πŸŒΈ

πŸ“¦ where this page comes from
  • arch rolling: systemd 262.1-1 Β· LGPL-2.1-or-later AND CC0-1.0 AND GPL-2.0-or-later AND MIT-0
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms