diff options
Diffstat (limited to 'man2/setuid.2')
| -rw-r--r-- | man2/setuid.2 | 55 |
1 files changed, 29 insertions, 26 deletions
diff --git a/man2/setuid.2 b/man2/setuid.2 index 6293ddd15e..c124ff4fc3 100644 --- a/man2/setuid.2 +++ b/man2/setuid.2 @@ -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. +.PP 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. +.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. .SH NOTES Linux has the concept of the filesystem user ID, normally equal to the effective user ID. @@ -118,31 +146,6 @@ 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), |
