.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu)
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.\" Historical remark, aeb, 2004-06-05
.TH GETUID 2 2021-03-22 "Linux" "Linux Programmer's Manual"
.SH NAME
getuid, geteuid \- get user identity
.SH SYNOPSIS
.nf
.B #include <unistd.h>
.PP
.B uid_t getuid(void);
.B uid_t geteuid(void);
.fi
.SH DESCRIPTION
.BR getuid ()
returns the real user ID of the calling process.
.PP
.BR geteuid ()
returns the effective user ID of the calling process.
.SH ERRORS
These functions are always successful
and never modify
.\" https://www.austingroupbugs.net/view.php?id=511
.\" 0000511: getuid and friends should not modify errno
.IR errno .
.SH CONFORMING TO
POSIX.1-2001, POSIX.1-2008, 4.3BSD.
.SH NOTES
.SS History
In UNIX\ V6 the
.BR getuid ()
call returned
.IR "(euid << 8) + uid" .
UNIX\ V7 introduced separate calls
.BR getuid ()
and
.BR geteuid ().
.PP
The original Linux
.BR getuid ()
and
.BR geteuid ()
system calls supported only 16-bit user IDs.
Subsequently, Linux 2.4 added
.BR getuid32 ()
and
.BR geteuid32 (),
supporting 32-bit IDs.
The glibc
.BR getuid ()
and
.BR geteuid ()
wrapper functions transparently deal with the variations across kernel versions.
.PP
On Alpha, instead of a pair of
.BR getuid ()
and
.BR geteuid ()
system calls, a single
.BR getxuid ()
system call is provided, which returns a pair of real and effective UIDs.
The glibc
.BR getuid ()
and
.BR geteuid ()
wrapper functions transparently deal with this.
See
.BR syscall (2)
for details regarding register mapping.
.SH SEE ALSO
.BR getresuid (2),
.BR setreuid (2),
.BR setuid (2),
.BR credentials (7)
