From: Lennart Poettering Date: Fri, 10 Jul 2026 07:09:13 +0000 (+0200) Subject: machined: set user.userdb.* xattrs on machined socket X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=33b2db3c8f819f5e6067aaebb81d957a1d644346;p=thirdparty%2Fsystemd.git machined: set user.userdb.* xattrs on machined socket --- diff --git a/src/machine/machined-varlink.c b/src/machine/machined-varlink.c index acc2137f830..b136ccf2a26 100644 --- a/src/machine/machined-varlink.c +++ b/src/machine/machined-varlink.c @@ -31,6 +31,7 @@ #include "varlink-io.systemd.Resolve.Hook.h" #include "varlink-io.systemd.service.h" #include "varlink-util.h" +#include "xattr-util.h" typedef struct LookupParameters { const char *user_name; @@ -774,6 +775,14 @@ static int manager_varlink_init_userdb(Manager *m) { if (r < 0) return log_error_errno(r, "Failed to bind to varlink socket %s: %m", VARLINK_PATH_MACHINED_USERDB); + /* Reduce the noise routed to us: advertise that only look-ups for the higher UID range */ + char text[DECIMAL_STR_MAX(uid_t) + 1 + DECIMAL_STR_MAX(gid_t) + 1]; + xsprintf(text, UID_FMT "-" UID_FMT, (uid_t) 0x10000U, (uid_t) UINT32_C(0xfffffffe)); + FOREACH_STRING(xattr, "user.userdb.uid", "user.userdb.gid") + (void) xsetxattr(AT_FDCWD, VARLINK_PATH_MACHINED_USERDB, /* at_flags= */ 0, xattr, text); + (void) xsetxattr(AT_FDCWD, VARLINK_PATH_MACHINED_USERDB, /* at_flags= */ 0, "user.userdb.username", "vu-*"); + (void) xsetxattr(AT_FDCWD, VARLINK_PATH_MACHINED_USERDB, /* at_flags= */ 0, "user.userdb.groupname", "vg-*"); + r = sd_varlink_server_attach_event(s, m->event, SD_EVENT_PRIORITY_NORMAL); if (r < 0) return log_error_errno(r, "Failed to attach varlink connection to event loop: %m");