SUB_UID_MIN 100000
SUB_UID_MAX 600100000
SUB_UID_COUNT 65536
+#
+# If set to yes, subordinate user ID entries in /etc/subuid are stored
+# using the numeric user ID rather than the username.
+#SUB_UID_STORE_BY_UID no
#
# Min/max values for automatic gid selection in groupadd(8)
SUB_GID_MIN 100000
SUB_GID_MAX 600100000
SUB_GID_COUNT 65536
+#
+# If set to yes, subordinate group ID entries in /etc/subgid are stored
+# using the numeric user ID rather than the username.
+#SUB_GID_STORE_BY_UID no
#
# Max number of login(1) retries if password is bad
{"SUB_GID_COUNT", NULL},
{"SUB_GID_MAX", NULL},
{"SUB_GID_MIN", NULL},
+ {"SUB_GID_STORE_BY_UID", NULL},
{"SUB_UID_COUNT", NULL},
{"SUB_UID_MAX", NULL},
{"SUB_UID_MIN", NULL},
+ {"SUB_UID_STORE_BY_UID", NULL},
{"SULOG_FILE", NULL},
{"SU_NAME", NULL},
{"SYS_GID_MAX", NULL},
USERGROUPS_ENAB.xml \
USE_TCB.xml \
SUB_GID_COUNT.xml \
+ SUB_GID_STORE_BY_UID.xml \
SUB_UID_COUNT.xml \
+ SUB_UID_STORE_BY_UID.xml \
SYS_GID_MAX.xml \
SYS_UID_MAX.xml \
YESCRYPT_COST_FACTOR.xml
<!ENTITY SU_NAME SYSTEM "login.defs.d/SU_NAME.xml">
<!ENTITY SU_WHEEL_ONLY SYSTEM "login.defs.d/SU_WHEEL_ONLY.xml">
<!ENTITY SUB_GID_COUNT SYSTEM "login.defs.d/SUB_GID_COUNT.xml">
+<!ENTITY SUB_GID_STORE_BY_UID SYSTEM "login.defs.d/SUB_GID_STORE_BY_UID.xml">
<!ENTITY SUB_UID_COUNT SYSTEM "login.defs.d/SUB_UID_COUNT.xml">
+<!ENTITY SUB_UID_STORE_BY_UID SYSTEM "login.defs.d/SUB_UID_STORE_BY_UID.xml">
<!ENTITY SYS_GID_MAX SYSTEM "login.defs.d/SYS_GID_MAX.xml">
<!ENTITY SYSLOG_SG_ENAB SYSTEM "login.defs.d/SYSLOG_SG_ENAB.xml">
<!ENTITY SYSLOG_SU_ENAB SYSTEM "login.defs.d/SYSLOG_SU_ENAB.xml">
&SU_NAME;
&SU_WHEEL_ONLY;
&SUB_GID_COUNT; <!-- documents also SUB_GID_MIN SUB_GID_MAX -->
+ &SUB_GID_STORE_BY_UID;
&SUB_UID_COUNT; <!-- documents also SUB_UID_MIN SUB_UID_MAX -->
+ &SUB_UID_STORE_BY_UID;
&SYS_GID_MAX; <!-- documents also SYS_GID_MIN -->
&SYS_UID_MAX; <!-- documents also SYS_UID_MIN -->
&SYSLOG_SG_ENAB;
PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE
SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS
SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN
+ SUB_GID_STORE_BY_UID
SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN
+ SUB_UID_STORE_BY_UID
SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN
UMASK
<phrase condition="yescrypt">YESCRYPT_COST_FACTOR</phrase>
MAIL_DIR MAX_MEMBERS_PER_GROUP
PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE
SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN
+ SUB_GID_STORE_BY_UID
SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN
+ SUB_UID_STORE_BY_UID
SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN
UMASK
<phrase condition="tcb">TCB_AUTH_GROUP TCB_SYMLINK USE_TCB</phrase>
--- /dev/null
+<!--
+ SPDX-FileCopyrightText: 2026, shadow-utils contributors
+ SPDX-License-Identifier: BSD-3-Clause
+-->
+<varlistentry condition="subids">
+ <term><option>SUB_GID_STORE_BY_UID</option> (boolean)</term>
+ <listitem>
+ <para>
+ If set to <replaceable>yes</replaceable>,
+ subordinate group ID entries in <filename>/etc/subgid</filename>
+ are stored using the numeric user ID
+ rather than the username.
+ The default value is <replaceable>no</replaceable>.
+ </para>
+ </listitem>
+</varlistentry>
--- /dev/null
+<!--
+ SPDX-FileCopyrightText: 2026, shadow-utils contributors
+ SPDX-License-Identifier: BSD-3-Clause
+-->
+<varlistentry condition="subids">
+ <term><option>SUB_UID_STORE_BY_UID</option> (boolean)</term>
+ <listitem>
+ <para>
+ If set to <replaceable>yes</replaceable>,
+ subordinate user ID entries in <filename>/etc/subuid</filename>
+ are stored using the numeric user ID
+ rather than the username.
+ The default value is <replaceable>no</replaceable>.
+ </para>
+ </listitem>
+</varlistentry>