]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man2/setuid.2
man*/: srcfix (Use .P instead of .PP or .LP)
[thirdparty/man-pages.git] / man2 / setuid.2
index 22d59afb67a4050e29ed12b2c329249df7ffc4de..2c987c437f7359c5b58dd56f32a1579684638df7 100644 (file)
@@ -8,7 +8,7 @@
 .\"   <richard@greenend.org.uk>, aeb 970616.
 .\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
 .\"     Added notes on capability requirements
-.TH SETUID 2 2021-03-22 "Linux man-pages (unreleased)"
+.TH setuid 2 (date) "Linux man-pages (unreleased)"
 .SH NAME
 setuid \- set user identity
 .SH LIBRARY
@@ -17,7 +17,7 @@ Standard C library
 .SH SYNOPSIS
 .nf
 .B #include <unistd.h>
-.PP
+.P
 .BI "int setuid(uid_t " uid );
 .fi
 .SH DESCRIPTION
@@ -28,7 +28,7 @@ If the calling process is privileged
 .B CAP_SETUID
 capability in its user namespace),
 the real UID and saved set-user-ID are also set.
-.PP
+.P
 Under Linux,
 .BR setuid ()
 is implemented like the POSIX version with the
@@ -37,7 +37,7 @@ feature.
 This allows a set-user-ID (other than root) program to drop all of its user
 privileges, do some un-privileged work, and then reengage the original
 effective user ID in a secure manner.
-.PP
+.P
 If the user is root or the program is set-user-ID-root, special care must be
 taken:
 .BR setuid ()
@@ -46,7 +46,7 @@ the superuser, all process-related user ID's are set to
 .IR uid .
 After this has occurred, it is impossible for the program to regain root
 privileges.
-.PP
+.P
 Thus, a set-user-ID-root program wishing to temporarily drop root
 privileges, assume the identity of an unprivileged user, and then regain
 root privileges afterward cannot use
@@ -58,7 +58,7 @@ On success, zero is returned.
 On error, \-1 is returned, and
 .I errno
 is set to indicate the error.
-.PP
+.P
 .IR Note :
 there are cases where
 .BR setuid ()
@@ -100,11 +100,39 @@ The user is not privileged (Linux: does not have the
 capability in its user namespace) and
 .I uid
 does not match the real UID or saved set-user-ID of the calling process.
+.SH VERSIONS
+.SS 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 the one for
+.BR setuid ())
+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, see
+.BR nptl (7).
 .SH STANDARDS
-POSIX.1-2001, POSIX.1-2008, SVr4.
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4.
+.P
 Not quite compatible with the 4.4BSD call, which
 sets all of the real, saved, and effective user IDs.
 .\" SVr4 documents an additional EINVAL error condition.
+.P
+The original Linux
+.BR setuid ()
+system call supported only 16-bit user IDs.
+Subsequently, Linux 2.4 added
+.BR setuid32 ()
+supporting 32-bit IDs.
+The glibc
+.BR setuid ()
+wrapper function transparently deals with the variation across kernel versions.
 .SH NOTES
 Linux has the concept of the filesystem user ID, normally equal to the
 effective user ID.
@@ -113,36 +141,11 @@ The
 call also sets the filesystem user ID of the calling process.
 See
 .BR setfsuid (2).
-.PP
+.P
 If
 .I uid
 is different from the old effective UID, the process will
 be forbidden from leaving core dumps.
-.PP
-The original Linux
-.BR setuid ()
-system call supported only 16-bit user IDs.
-Subsequently, Linux 2.4 added
-.BR setuid32 ()
-supporting 32-bit IDs.
-The glibc
-.BR setuid ()
-wrapper function transparently deals with the variation across kernel versions.
-.\"
-.SS 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 the one for
-.BR setuid ())
-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, see
-.BR nptl (7).
 .SH SEE ALSO
 .BR getuid (2),
 .BR seteuid (2),