Copyright © tutorialspoint.com
int setresuid(uid_t ruid, uid_t euid, uid_t suid);
int setresgid(gid_t rgid, gid_t egid, gid_t sgid);
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.
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. |
Copyright © tutorialspoint.com