Zbigniew Jędrzejewski-Szmek 33320d
From 420ae742ef584fbe5b98780c3cdada528a45ad67 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 33320d
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Zbigniew Jędrzejewski-Szmek 33320d
Date: Sun, 23 May 2021 22:00:22 +0200
Zbigniew Jędrzejewski-Szmek 33320d
Subject: [PATCH] meson: allow "soft-static" allocations for uids and gids in
Zbigniew Jędrzejewski-Szmek 33320d
 the initrd
Zbigniew Jędrzejewski-Szmek 33320d
Zbigniew Jędrzejewski-Szmek 33320d
The general idea with users and groups created through sysusers is that an
Zbigniew Jędrzejewski-Szmek 33320d
appropriate number is picked when the allocation is made. The number that is
Zbigniew Jędrzejewski-Szmek 33320d
selected will be different on each system based on the order of creation of
Zbigniew Jędrzejewski-Szmek 33320d
users, installed packages, etc. Since system users and groups are not shared
Zbigniew Jędrzejewski-Szmek 33320d
between installations, this generally is not an issue. But it becomes a problem
Zbigniew Jędrzejewski-Szmek 33320d
for initrd: some file systems are shared between the initrd and the host (/run
Zbigniew Jędrzejewski-Szmek 33320d
and /dev are probably the only ones that matter). If the allocations are
Zbigniew Jędrzejewski-Szmek 33320d
different in the host and the initrd, and files survive switch-root, they will
Zbigniew Jędrzejewski-Szmek 33320d
have wrong ownership.
Zbigniew Jędrzejewski-Szmek 33320d
Zbigniew Jędrzejewski-Szmek 33320d
This makes the gids build-time-configurable for all groups and users where
Zbigniew Jędrzejewski-Szmek 33320d
state may survive the switch from initrd to the host.
Zbigniew Jędrzejewski-Szmek 33320d
Zbigniew Jędrzejewski-Szmek 33320d
In particular, all "hardware access" groups are like this: files in /dev will
Zbigniew Jędrzejewski-Szmek 33320d
be owned by them.  Eventually the new udev would change ownership, but there
Zbigniew Jędrzejewski-Szmek 33320d
would be a momemnt where the files were owned by the wrong group. The
Zbigniew Jędrzejewski-Szmek 33320d
allocations are "soft-static" in the language of Fedora packaging guidelines:
Zbigniew Jędrzejewski-Szmek 33320d
the uid/gid will be used if possible, but we'll fall back to a different
Zbigniew Jędrzejewski-Szmek 33320d
one. TTY_GID is the exception, because the number is used directly.
Zbigniew Jędrzejewski-Szmek 33320d
Zbigniew Jędrzejewski-Szmek 33320d
Similarly, the possibility to configure "soft-static" uids is added for daemons
Zbigniew Jędrzejewski-Szmek 33320d
which may usefully run in the initramfs: systemd-network (lease information and
Zbigniew Jędrzejewski-Szmek 33320d
interface state is serialized to /run), systemd-resolve (stub files and
Zbigniew Jędrzejewski-Szmek 33320d
interface state), systemd-timesync (/run/systemd/timesync).
Zbigniew Jędrzejewski-Szmek 33320d
Zbigniew Jędrzejewski-Szmek 33320d
Journal files are owned by the group systemd-journal, and acls are granted
Zbigniew Jędrzejewski-Szmek 33320d
for wheel and adm.
Zbigniew Jędrzejewski-Szmek 33320d
Zbigniew Jędrzejewski-Szmek 33320d
systemd-oom and systemd-coredump are excluded from this patch: I assume that
Zbigniew Jędrzejewski-Szmek 33320d
oomd is not useful in the initrd, and coredump leaves no state (it only creates
Zbigniew Jędrzejewski-Szmek 33320d
a pipe in /run?).
Zbigniew Jędrzejewski-Szmek 33320d
Zbigniew Jędrzejewski-Szmek 33320d
The defaults are not changed: if nothing is configured, dynamic allocation will
Zbigniew Jędrzejewski-Szmek 33320d
be used. I looked at a Debian system, and the numbers are all different than
Zbigniew Jędrzejewski-Szmek 33320d
on Fedora.
Zbigniew Jędrzejewski-Szmek 33320d
Zbigniew Jędrzejewski-Szmek 33320d
For Fedora, see the list of uids and gids at https://pagure.io/setup/blob/master/f/uidgid.
Zbigniew Jędrzejewski-Szmek 33320d
In particular, systemd-network and systemd-resolve got soft-static numbers to
Zbigniew Jędrzejewski-Szmek 33320d
make it easy to transition from a non-host-specific initrd to a host system
Zbigniew Jędrzejewski-Szmek 33320d
already a few years back (https://bugzilla.redhat.com/show_bug.cgi?id=1102002).
Zbigniew Jędrzejewski-Szmek 33320d
Zbigniew Jędrzejewski-Szmek 33320d
I also requested static allocations for sgx, input, render in
Zbigniew Jędrzejewski-Szmek 33320d
https://pagure.io/packaging-committee/issue/1078,
Zbigniew Jędrzejewski-Szmek 33320d
https://pagure.io/setup/pull-request/27.
Zbigniew Jędrzejewski-Szmek 33320d
---
Zbigniew Jędrzejewski-Szmek 33320d
 meson.build                | 40 ++++++++++++++++++++++++-------
Zbigniew Jędrzejewski-Szmek 33320d
 meson_options.txt          | 48 ++++++++++++++++++++++++++++++++++----
Zbigniew Jędrzejewski-Szmek 33320d
 sysusers.d/basic.conf.in   | 38 +++++++++++++++---------------
Zbigniew Jędrzejewski-Szmek 33320d
 sysusers.d/systemd.conf.in |  8 +++----
Zbigniew Jędrzejewski-Szmek 33320d
 4 files changed, 99 insertions(+), 35 deletions(-)
Zbigniew Jędrzejewski-Szmek 33320d
Zbigniew Jędrzejewski-Szmek 33320d
diff --git a/meson.build b/meson.build
Zbigniew Jędrzejewski-Szmek 33320d
index 0b136529e3a1..3634ce0a3cb0 100644
Zbigniew Jędrzejewski-Szmek 33320d
--- a/meson.build
Zbigniew Jędrzejewski-Szmek 33320d
+++ b/meson.build
Zbigniew Jędrzejewski-Szmek 33320d
@@ -793,12 +793,37 @@ endif
Zbigniew Jędrzejewski-Szmek 33320d
 conf.set_quoted('NOBODY_USER_NAME', nobody_user)
Zbigniew Jędrzejewski-Szmek 33320d
 conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Zbigniew Jędrzejewski-Szmek 33320d
 
Zbigniew Jędrzejewski-Szmek 33320d
-tty_gid = get_option('tty-gid')
Zbigniew Jędrzejewski-Szmek 33320d
-conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek 33320d
-
Zbigniew Jędrzejewski-Szmek 33320d
-# Ensure provided GID argument is numeric, otherwise fall back to default assignment
Zbigniew Jędrzejewski-Szmek 33320d
-users_gid = get_option('users-gid')
Zbigniew Jędrzejewski-Szmek 33320d
-conf.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Zbigniew Jędrzejewski-Szmek 33320d
+static_ugids = []
Zbigniew Jędrzejewski-Szmek 33320d
+foreach option : ['adm-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'audio-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'cdrom-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'dialout-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'disk-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'input-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'kmem-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'kvm-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'lp-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'render-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'sgx-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'tape-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'tty-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'users-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'utmp-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'video-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'wheel-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'systemd-journal-gid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'systemd-network-uid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'systemd-resolve-uid',
Zbigniew Jędrzejewski-Szmek 33320d
+                  'systemd-timesync-uid']
Zbigniew Jędrzejewski-Szmek 33320d
+        name = option.underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek 33320d
+        val = get_option(option)
Zbigniew Jędrzejewski-Szmek 33320d
+
Zbigniew Jędrzejewski-Szmek 33320d
+        # Ensure provided GID argument is numeric, otherwise fall back to default assignment
Zbigniew Jędrzejewski-Szmek 33320d
+        conf.set(name, val >= 0 ? val : '-')
Zbigniew Jędrzejewski-Szmek 33320d
+        if val >= 0
Zbigniew Jędrzejewski-Szmek 33320d
+                static_ugids += '@0@:@1@'.format(option, val)
Zbigniew Jędrzejewski-Szmek 33320d
+        endif
Zbigniew Jędrzejewski-Szmek 33320d
+endforeach
Zbigniew Jędrzejewski-Szmek 33320d
 
Zbigniew Jędrzejewski-Szmek 33320d
 conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
Zbigniew Jędrzejewski-Szmek 33320d
 conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek 33320d
@@ -3713,14 +3738,13 @@ status = [
Zbigniew Jędrzejewski-Szmek 33320d
         'extra start script:                @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek 33320d
         'debug shell:                       @0@ @ @1@'.format(get_option('debug-shell'),
Zbigniew Jędrzejewski-Szmek 33320d
                                                               get_option('debug-tty')),
Zbigniew Jędrzejewski-Szmek 33320d
-        'TTY GID:                           @0@'.format(tty_gid),
Zbigniew Jędrzejewski-Szmek 33320d
-        'users GID:                         @0@'.format(conf.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek 33320d
         'system UIDs:                       <=@0@ (alloc >=@1@)'.format(conf.get('SYSTEM_UID_MAX'),
Zbigniew Jędrzejewski-Szmek 33320d
                                                                         conf.get('SYSTEM_ALLOC_UID_MIN')),
Zbigniew Jędrzejewski-Szmek 33320d
         'system GIDs:                       <=@0@ (alloc >=@1@)'.format(conf.get('SYSTEM_GID_MAX'),
Zbigniew Jędrzejewski-Szmek 33320d
                                                                         conf.get('SYSTEM_ALLOC_GID_MIN')),
Zbigniew Jędrzejewski-Szmek 33320d
         'dynamic UIDs:                      @0@…@1@'.format(dynamic_uid_min, dynamic_uid_max),
Zbigniew Jędrzejewski-Szmek 33320d
         'container UID bases:               @0@…@1@'.format(container_uid_base_min, container_uid_base_max),
Zbigniew Jędrzejewski-Szmek 33320d
+        'static UID/GID allocations:        @0@'.format(' '.join(static_ugids)),
Zbigniew Jędrzejewski-Szmek 33320d
         '/dev/kvm access mode:              @0@'.format(get_option('dev-kvm-mode')),
Zbigniew Jędrzejewski-Szmek 33320d
         'render group access mode:          @0@'.format(get_option('group-render-mode')),
Zbigniew Jędrzejewski-Szmek 33320d
         'certificate root directory:        @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek 33320d
diff --git a/meson_options.txt b/meson_options.txt
Zbigniew Jędrzejewski-Szmek 33320d
index fc58e888d939..5048de755d91 100644
Zbigniew Jędrzejewski-Szmek 33320d
--- a/meson_options.txt
Zbigniew Jędrzejewski-Szmek 33320d
+++ b/meson_options.txt
Zbigniew Jędrzejewski-Szmek 33320d
@@ -204,6 +204,7 @@ option('status-unit-format-default', type : 'combo',
Zbigniew Jędrzejewski-Szmek 33320d
        description : 'use unit name or description in messages by default')
Zbigniew Jędrzejewski-Szmek 33320d
 option('time-epoch', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
        description : 'time epoch for time clients')
Zbigniew Jędrzejewski-Szmek 33320d
+
Zbigniew Jędrzejewski-Szmek 33320d
 option('system-alloc-uid-min', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
        description : 'minimum system UID used when allocating')
Zbigniew Jędrzejewski-Szmek 33320d
 option('system-alloc-gid-min', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
@@ -220,10 +221,6 @@ option('container-uid-base-min', type : 'integer', value : 0x00080000,
Zbigniew Jędrzejewski-Szmek 33320d
        description : 'minimum container UID base')
Zbigniew Jędrzejewski-Szmek 33320d
 option('container-uid-base-max', type : 'integer', value : 0x6FFF0000,
Zbigniew Jędrzejewski-Szmek 33320d
        description : 'maximum container UID base')
Zbigniew Jędrzejewski-Szmek 33320d
-option('tty-gid', type : 'integer', value : 5,
Zbigniew Jędrzejewski-Szmek 33320d
-       description : 'the numeric GID of the "tty" group')
Zbigniew Jędrzejewski-Szmek 33320d
-option('users-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
-       description : 'the numeric GID of the "users" group')
Zbigniew Jędrzejewski-Szmek 33320d
 option('adm-group', type : 'boolean',
Zbigniew Jędrzejewski-Szmek 33320d
        description : 'the ACL for adm group should be added')
Zbigniew Jędrzejewski-Szmek 33320d
 option('wheel-group', type : 'boolean',
Zbigniew Jędrzejewski-Szmek 33320d
@@ -234,6 +231,49 @@ option('nobody-user', type : 'string',
Zbigniew Jędrzejewski-Szmek 33320d
 option('nobody-group', type : 'string',
Zbigniew Jędrzejewski-Szmek 33320d
        description : 'The name of the nobody group (the one with GID 65534)',
Zbigniew Jędrzejewski-Szmek 33320d
        value : 'nobody')
Zbigniew Jędrzejewski-Szmek 33320d
+option('adm-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "adm" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('audio-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "audio" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('cdrom-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "cdrom" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('dialout-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "dialout" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('disk-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "disk" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('input-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "input" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('kmem-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "kmem" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('kvm-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "kvm" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('lp-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "lp" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('render-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "render" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('sgx-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "sgx" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('tape-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "tape" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('tty-gid', type : 'integer', value : 5,
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'the numeric GID of the "tty" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('users-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "users" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('utmp-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "utmp" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('video-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "video" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('wheel-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the "wheel" group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('systemd-journal-gid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the systemd-journal group')
Zbigniew Jędrzejewski-Szmek 33320d
+option('systemd-network-uid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the systemd-network user')
Zbigniew Jędrzejewski-Szmek 33320d
+option('systemd-resolve-uid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the systemd-resolve user')
Zbigniew Jędrzejewski-Szmek 33320d
+option('systemd-timesync-uid', type : 'integer', value : '-1',
Zbigniew Jędrzejewski-Szmek 33320d
+       description : 'soft-static allocation for the systemd-timesync user')
Zbigniew Jędrzejewski-Szmek 33320d
+
Zbigniew Jędrzejewski-Szmek 33320d
 option('dev-kvm-mode', type : 'string', value : '0666',
Zbigniew Jędrzejewski-Szmek 33320d
        description : '/dev/kvm access mode')
Zbigniew Jędrzejewski-Szmek 33320d
 option('group-render-mode', type : 'string', value : '0666',
Zbigniew Jędrzejewski-Szmek 33320d
diff --git a/sysusers.d/basic.conf.in b/sysusers.d/basic.conf.in
Zbigniew Jędrzejewski-Szmek 33320d
index 9da02514216d..8cc1a7cad218 100644
Zbigniew Jędrzejewski-Szmek 33320d
--- a/sysusers.d/basic.conf.in
Zbigniew Jędrzejewski-Szmek 33320d
+++ b/sysusers.d/basic.conf.in
Zbigniew Jędrzejewski-Szmek 33320d
@@ -12,28 +12,28 @@ u root    0     "Super User" /root
Zbigniew Jędrzejewski-Szmek 33320d
 u {{NOBODY_USER_NAME}}  65534 "Nobody"     -
Zbigniew Jędrzejewski-Szmek 33320d
 
Zbigniew Jędrzejewski-Szmek 33320d
 # Administrator group: can *see* more than normal users
Zbigniew Jędrzejewski-Szmek 33320d
-g adm     -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g adm     {{ADM_GID    }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
 
Zbigniew Jędrzejewski-Szmek 33320d
 # Administrator group: can *do* more than normal users
Zbigniew Jędrzejewski-Szmek 33320d
-g wheel   -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g wheel   {{WHEEL_GID  }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
 
Zbigniew Jędrzejewski-Szmek 33320d
-# Access to certain kernel and userspace facilities
Zbigniew Jędrzejewski-Szmek 33320d
-g kmem    -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
-g tty     {{TTY_GID}}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
-g utmp    -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+# Access to shared database of users on the system
Zbigniew Jędrzejewski-Szmek 33320d
+g utmp    {{UTMP_GID   }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
 
Zbigniew Jędrzejewski-Szmek 33320d
-# Hardware access groups
Zbigniew Jędrzejewski-Szmek 33320d
-g audio   -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
-g cdrom   -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
-g dialout -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
-g disk    -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
-g input   -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
-g kvm     -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
-g lp      -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
-g render  -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
-g sgx     -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
-g tape    -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
-g video   -     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+# Physical and virtual hardware access groups
Zbigniew Jędrzejewski-Szmek 33320d
+g audio   {{AUDIO_GID  }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g cdrom   {{CDROM_GID  }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g dialout {{DIALOUT_GID}}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g disk    {{DISK_GID   }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g input   {{INPUT_GID  }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g kmem    {{KMEM_GID   }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g kvm     {{KVM_GID    }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g lp      {{LP_GID     }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g render  {{RENDER_GID }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g sgx     {{SGX_GID    }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g tape    {{TAPE_GID   }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g tty     {{TTY_GID    }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g video   {{VIDEO_GID  }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
 
Zbigniew Jędrzejewski-Szmek 33320d
 # Default group for normal users
Zbigniew Jędrzejewski-Szmek 33320d
-g users   {{USERS_GID}}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
+g users   {{USERS_GID  }}     -            -
Zbigniew Jędrzejewski-Szmek 33320d
diff --git a/sysusers.d/systemd.conf.in b/sysusers.d/systemd.conf.in
Zbigniew Jędrzejewski-Szmek 33320d
index 9905eb596c61..9941ef8ef4f7 100644
Zbigniew Jędrzejewski-Szmek 33320d
--- a/sysusers.d/systemd.conf.in
Zbigniew Jędrzejewski-Szmek 33320d
+++ b/sysusers.d/systemd.conf.in
Zbigniew Jędrzejewski-Szmek 33320d
@@ -5,18 +5,18 @@
Zbigniew Jędrzejewski-Szmek 33320d
 #  the Free Software Foundation; either version 2.1 of the License, or
Zbigniew Jędrzejewski-Szmek 33320d
 #  (at your option) any later version.
Zbigniew Jędrzejewski-Szmek 33320d
 
Zbigniew Jędrzejewski-Szmek 33320d
-g systemd-journal   - -
Zbigniew Jędrzejewski-Szmek 33320d
+g systemd-journal   {{SYSTEMD_JOURNAL_GID}} -
Zbigniew Jędrzejewski-Szmek 33320d
 {% if ENABLE_NETWORKD %}
Zbigniew Jędrzejewski-Szmek 33320d
-u systemd-network   - "systemd Network Management"
Zbigniew Jędrzejewski-Szmek 33320d
+u systemd-network   {{SYSTEMD_NETWORK_UID}} "systemd Network Management"
Zbigniew Jędrzejewski-Szmek 33320d
 {% endif %}
Zbigniew Jędrzejewski-Szmek 33320d
 {% if ENABLE_OOMD %}
Zbigniew Jędrzejewski-Szmek 33320d
 u systemd-oom       - "systemd Userspace OOM Killer"
Zbigniew Jędrzejewski-Szmek 33320d
 {% endif %}
Zbigniew Jędrzejewski-Szmek 33320d
 {% if ENABLE_RESOLVE %}
Zbigniew Jędrzejewski-Szmek 33320d
-u systemd-resolve   - "systemd Resolver"
Zbigniew Jędrzejewski-Szmek 33320d
+u systemd-resolve   {{SYSTEMD_RESOLVE_UID}} "systemd Resolver"
Zbigniew Jędrzejewski-Szmek 33320d
 {% endif %}
Zbigniew Jędrzejewski-Szmek 33320d
 {% if ENABLE_TIMESYNCD %}
Zbigniew Jędrzejewski-Szmek 33320d
-u systemd-timesync  - "systemd Time Synchronization"
Zbigniew Jędrzejewski-Szmek 33320d
+u systemd-timesync  {{SYSTEMD_TIMESYNC_UID}} "systemd Time Synchronization"
Zbigniew Jędrzejewski-Szmek 33320d
 {% endif %}
Zbigniew Jędrzejewski-Szmek 33320d
 {% if ENABLE_COREDUMP %}
Zbigniew Jędrzejewski-Szmek 33320d
 u systemd-coredump  - "systemd Core Dumper"