From ddf38abe45889598ccedc4978f0a302216dc5538 Mon Sep 17 00:00:00 2001 From: Abhishek Mishra Date: Thu, 16 Jul 2026 18:55:41 +0000 Subject: [PATCH] Documentation: describe credential APIs and pseudo-fs ownership Document setreuid/setregid, getresuid/getresgid, and how inode_reserve assigns owner and group for pseudo-filesystem objects. Signed-off-by: Abhishek Mishra --- .../implementation/user_identity.rst | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/Documentation/implementation/user_identity.rst b/Documentation/implementation/user_identity.rst index ab7ecdaa6ca..5c9486901bd 100644 --- a/Documentation/implementation/user_identity.rst +++ b/Documentation/implementation/user_identity.rst @@ -59,6 +59,24 @@ the saved ID. Otherwise the function returns ``-1`` with ``errno`` set to This implements the standard POSIX pattern of temporarily dropping privileges with ``seteuid()`` or ``setegid()`` and later restoring them to the saved value. +``setreuid()`` and ``setregid()`` +--------------------------------- + +These functions set the real and/or effective IDs in a single call. When the +effective ID is zero, any requested real and effective values may be assigned +and the saved set-ID is updated accordingly. When the effective ID is +non-zero, each requested value must equal the current effective ID, saved +set-ID, or (for the effective argument only) the real ID; otherwise the call +returns ``-1`` with ``errno`` set to ``EPERM``. When the real ID is changed, +or the effective ID is changed to a value not equal to the real ID, the saved +set-ID is set to the new effective ID. + +``getresuid()`` and ``getresgid()`` +----------------------------------- + +These functions return the real, effective, and saved set-IDs for the calling +task group. Any output pointer may be ``NULL`` if that ID is not needed. + Configuration ============= @@ -69,3 +87,14 @@ Configuration ``CONFIG_FS_PERMISSION`` Enables filesystem ownership and permission enforcement. Requires ``CONFIG_SCHED_USER_IDENTITY``. + +Pseudo-Filesystem Ownership +=========================== + +When ``CONFIG_PSEUDOFS_ATTRIBUTES`` and ``CONFIG_SCHED_USER_IDENTITY`` are both +enabled, ``inode_alloc()`` assigns ``i_owner`` and ``i_group`` from the +caller's effective credentials. This covers +message queues (``mq_open()``), named semaphores (``sem_open()``), shared +memory objects (``shm_open()``), FIFOs (``mkfifo()``), and pseudo-files +created through the same inode reservation path. Open-time permission checks +use ``inode_checkopenperm()`` (or ``inode_checkperm()`` for message queues).