int
setreuid(
uid_t ruid
, uid_t euid
)
The real and effective user ID's of the current process are set according to the arguments. If the real user ID is changed, the saved user ID is changed to the new value of the effective user ID.
If
ruid
or
euid
is -1, the current uid is filled in by the system.
Unprivileged users may change the real user
ID to the effective user ID, and may change the effective user ID to the
real user ID or the saved user ID; only the super-user may
make other changes.
The
setreuid()
function has been used to swap the real and effective user
IDs in set-user-ID programs to temporarily relinquish the set-user-ID
value.
This purpose is now better served by the use of the
seteuid(
)
function (see
setuid(2)).
When setting the real and effective user IDs to the same value, this
function is equivalent to the
setuid()
function.
When setting only the effective user ID, this function is equivalent to
the
seteuid(
)
function.
EPERM
]
)
function call appeared in
4.2BSD.
An incompatible version was implemented in
4.4BSD.
It was reimplemented in
NetBSD1.2
in a way compatible with
4.3BSD,
SunOS and Linux, but should not be used in new code.