Web | This Site

Unix for Beginners
Unix Shell Programming
Advanced Unix
Unix Useful References
Unix Useful Resources
Selected Reading
© 2011 TutorialsPoint.COM

| Home |  | References |  | Discussion Forums |  | About TP

# setresuid() - Unix, Linux System Call

# NAME

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

# SYNOPSIS

#define _GNU_SOURCE
#include <unistd.h>

int setresuid(uid_t ruid, uid_t euid, uid_t suid);
int setresgid(gid_t rgid, gid_t egid, gid_t sgid);

# DESCRIPTION

setresuid() sets the real user ID, the effective user ID, and the saved set-user-ID of the current process.

Unprivileged user processes may change the 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.

Privileged processes (on Linux, those having the CAP_SETUID capability) may set the real UID, effective UID, and saved set-user-ID to arbitrary values.

If one of the parameters 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 file system 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 current process (and always modifies the file system GID to be the same as the effective GID), with the same restrictions for non-privileged processes.

# RETURN VALUE

On success, zero is returned. On error, -1 is returned, and errno is set appropriately.

# ERRORS

Tag | Description
--- | ---
EAGAIN | uid does not match the current UID and this call would bring that user ID over its NPROC rlimit.
EPERM | The calling process is not privileged (did not have the CAP_SETUID capability) and tried to change the IDs to values that are not permitted.

# CONFORMING TO

These calls are non-standard; they also appear on HP-UX and some of the BSDs.

# HISTORY

This system call was first introduced in HP-UX. It is available under Linux since Linux 2.1.44. These days it is also found in FreeBSD (for emulation of Linux binaries).

# NOTES

Under HP-UX and FreeBSD the prototype is found in <unistd.h>. Under Linux the prototype is given by glibc since version 2.3.2 provided _GNU_SOURCE is defined.

# SEE ALSO

- getresuid (2)

- getuid (2)

- setfsuid (2)

- setfsgid (2)

- setreuid (2)

- setuid (2)

Advertisement

Online Image Processing

Indian Baby Names