Provided by: manpages-pl-dev_20060617-1_all bug

NAZWA

       setresuid,   setresgid   -   ustawienie  rzeczywistego,  efektywnego  i
       zachowanego ID użytkownika lub grupy

SKŁADNIA

       #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);

OPIS

       setresuid() ustawia  dla  bieżącego  procesu  rzeczywisty  i  efektywny
       identyfikator użytkownika (UID) oraz wartość zachowanego set-user-ID.

       Proces nieuprzywilejowany może zmienić rzeczywisty UID, efektywny UID i
       zachowany set-user-ID na jeden  z:  bieżący  rzeczywisty  UID,  bieżący
       efektywny UID lub bieżący zachowany UID

       Proces  uprzywilejowany (pod Linuksem - mający atrybut CAP_SETUID) może
       ustawić rzeczywisty UID,  efektywny  UID  i  zachowany  set-user-ID  na
       dowolne wartości.

       Jeżeli  którykolwiek  z  parametrów  jest równy -1, to odpowiadająca mu
       wartość nie jest zmieniana.

       Niezależnie od zmian rzeczywistego UID, efektywnego UID  i  zachowanego
       set-user-ID,   file-system-UID  jest  zawsze  ustawiany  na  taką  samą
       wartość, jaką ma (być może nowy) efektywny UID.

       Analogicznie,  setresgid()  ustawia  rzeczywisty  identyfikator   grupy
       (GID),  efektywny  GID  i  zachowany  set-group-ID bieżącego procesu (i
       zawsze ustawia file-system-GID na wartość efektywnego  GID),  z  takimi
       samymi ograniczeniami dla procesów nieuprzywilejowanych.

WARTOŚĆ ZWRACANA

       Po  pomyślnym  zakończeniu zwracane jest zero. Po błędzie zwracane jest
       -1 i odpowiednio ustawiane errno.

BŁĘDY

       EAGAIN uid nie pasuje  do  obecnego  ID  użytkownika,  a  to  wywołanie
              pozwoliłoby obejść użytkownikowi limit NPROC.

       EPERM  Proces  wywołujący  nie  jest  procesem uprzywilejowanym (nie ma
              atrybutu CAP_SETUID) i  próbował  ustawić  niedozwoloną  wartość
              któregoś z identyfikatorów.

ZGODNE Z

       To wywołanie systemowe jest niestandardowe.

HISTORIA

       To  wywołanie  systemowe  pojawiło  się  po  raz pierwszy w HP-UX. Jest
       dostępne pod Linuksem od wersji 2.1.44. Obecnie można je znaleźć  także
       w FreeBSD (dla emulacji programów linuksowych).

UWAGI

       Na  HP-UX  i  FreeBSD  prototyp  funkcji można znaleźć w <unistd.h>.Pod
       Liniksem prototyp jest dostarczany przez glibc  od  wersji  2.3.2,  pod
       warunkiem, że zdefiniowano _GNU_SOURCE.

ZOBACZ TAKŻE

       getresuid(2),   getuid(2),   setfsuid(2),   setfsgid(2),   setreuid(2),
       setuid(2), capabilities(7)