Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


setresuid(2) — Linux manual page

NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |VERSIONS |STANDARDS |HISTORY |SEE ALSO |COLOPHON

setresuid(2)               System Calls Manualsetresuid(2)

NAME        top

       setresuid, setresgid - set real, effective, and saved user or       group ID

LIBRARY        top

       Standard C library (libc,-lc)

SYNOPSIS        top

#define _GNU_SOURCE/* See feature_test_macros(7) */#include <unistd.h>int setresuid(uid_truid, uid_teuid, uid_tsuid);int setresgid(gid_trgid, gid_tegid, gid_tsgid);

DESCRIPTION        top

setresuid() sets the real user ID, the effective user ID, and the       saved set-user-ID of the calling process.       An unprivileged process may change its real UID, effective UID,       and saved set-user-ID, each to one of: the current real UID, the       current effective UID, or the current saved set-user-ID.       A privileged process (on Linux, one having theCAP_SETUID       capability) may set its real UID, effective UID, and saved set-       user-ID to arbitrary values.       If one of the arguments equals -1, the corresponding value is not       changed.       Regardless of what changes are made to the real UID, effective       UID, and saved set-user-ID, the filesystem UID is always set to       the same value as the (possibly new) effective UID.       Completely analogously,setresgid() sets the real GID, effective       GID, and saved set-group-ID of the calling process (and always       modifies the filesystem GID to be the same as the effective GID),       with the same restrictions for unprivileged processes.

RETURN VALUE        top

       On success, zero is returned.  On error, -1 is returned, anderrno       is set to indicate the error.Note: there are cases wheresetresuid() can fail even when the       caller is UID 0; it is a grave security error to omit checking for       a failure return fromsetresuid().

ERRORS        top

EAGAINThe call would change the caller's real UID (i.e.,ruid              does not match the caller's real UID), but there was a              temporary failure allocating the necessary kernel data              structures.EAGAINruid does not match the caller's real UID and this call              would bring the number of processes belonging to the real              user IDruid over the caller'sRLIMIT_NPROCresource limit.              Since Linux 3.1, this error case no longer occurs (but              robust applications should check for this error); see the              description ofEAGAINinexecve(2).EINVALOne or more of the target user or group IDs is not valid in              this user namespace.EPERMThe calling process is not privileged (did not have the              necessary capability in its user namespace) and tried to              change the IDs to values that are not permitted.  Forsetresuid(), the necessary capability isCAP_SETUID; forsetresgid(), it isCAP_SETGID.

VERSIONS        top

C library/kernel differences       At the kernel level, user IDs and group IDs are a per-thread       attribute.  However, POSIX requires that all threads in a process       share the same credentials.  The NPTL threading implementation       handles the POSIX requirements by providing wrapper functions for       the various system calls that change process UIDs and GIDs.  These       wrapper functions (including those forsetresuid() andsetresgid()) employ a signal-based technique to ensure that when       one thread changes credentials, all of the other threads in the       process also change their credentials.  For details, seenptl(7).

STANDARDS        top

       None.

HISTORY        top

       Linux 2.1.44, glibc 2.3.2.  HP-UX, FreeBSD.       The original Linuxsetresuid() andsetresgid() system calls       supported only 16-bit user and group IDs.  Subsequently, Linux 2.4       addedsetresuid32() andsetresgid32(), supporting 32-bit IDs.  The       glibcsetresuid() andsetresgid() wrapper functions transparently       deal with the variations across kernel versions.

SEE ALSO        top

getresuid(2),getuid(2),setfsgid(2),setfsuid(2),setreuid(2),setuid(2),capabilities(7),credentials(7),user_namespaces(7)

COLOPHON        top

       This page is part of theman-pages (Linux kernel and C library       user-space interface documentation) project.  Information about       the project can be found at        ⟨https://www.kernel.org/doc/man-pages/⟩.  If you have a bug report       for this manual page, see       ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.       This page was obtained from the tarball man-pages-6.15.tar.gz       fetched from       ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on       2025-08-11.  If you discover any rendering problems in this HTML       version of the page, or you believe there is a better or more up-       to-date source for the page, or you have corrections or       improvements to the information in this COLOPHON (which isnot       part of the original manual page), send a mail to       man-pages@man7.orgLinux man-pages 6.15            2025-05-17setresuid(2)

Pages that refer to this page:execve(2)getresuid(2)seteuid(2)setreuid(2)syscalls(2)systemd.exec(5)capabilities(7)credentials(7)nptl(7)user_namespaces(7)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp