Provided by: manpages-pl-dev_0.6-2_all bug

NAZWA

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

SKŁADNIA

       #define _GNU_SOURCE /* Patrz feature_test_macros(7) */
       #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 set-user-ID.

       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,
       filesystem-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  filesystem-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.

       Uwaga: są przypadki, gdy setresuid() może zawieść nawet wówczas, gdy wywołujący ma UID  0.
       Pominięcie  sprawdzenia  zwrotu  niepowodzenia  z  setresuid()  jest  poważnym zagrożeniem
       bezpieczeństwa.

BŁĘDY

       EAGAIN Wywołanie mogłoby zmienić rzeczywisty UID wywołującego (tzn. ruid nie pasowałby  do
              rzeczywistego  UID  wywołującego),  lecz  wystąpiło  tu  tymczasowe niepowodzenie w
              przydzieleniu niezbędnych struktur danych jądra.

       EAGAIN ruid nie pasuje do rzeczywistego UID wywołującego,  a  to  wywołanie  spowodowałoby
              przekroczenie  limitu  zasobów  RLIMIT_NPROC  wywołującego  przez  liczbę  procesów
              należących do rzeczywistego ID użytkownika ruid. Od Linuksa 3.1 błąd  ten  już  się
              nie  pojawia (lecz solidne aplikacje powinny dokonywać jego sprawdzenia); zob. opis
              EAGAIN w execve(2).

       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.

WERSJE

       Opisywane wywołania systemowe są dostępne w Linuksie od wersji 2.1.44.

ZGODNE Z

       Opisywane  wywołania  systemowe są niestandardowe; występują również na HP-UX i niektórych
       systemach BSD.

UWAGI

       Na HP-UX i FreeBSD prototyp funkcji można znaleźć w <unistd.h>. Pod Linuksem prototyp jest
       dostarczany przez glibc od wersji 2.3.2.

       Oryginalne,  linuksowe  wywołania  setresuid()   i setresgid() obsługiwały tylko 16-bitowe
       identyfikatory użytkownika i grupy. Następnie w  Linuksie  2.4  dodano   setresuid32()   i
       setresgid32(),  obsługujące  32-bitowe  identyfikatory. Funkcje opakowujące setresuid()  i
       setresgid() biblioteki  glibc obsługują te warianty wywołań w  różnych  wersjach  jądra  w
       sposób przezroczysty dla użytkownika.

ZOBACZ TAKŻE

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

O STRONIE

       Angielska wersja tej strony  pochodzi  z  wydania  3.71  projektu  Linux  man-pages.  Opis
       projektu,  informacje  dotyczące  zgłaszania błędów, oraz najnowszą wersję oryginału można
       znaleźć pod adresem http://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

       Autorami polskiego tłumaczenia  niniejszej  strony  podręcznika  man  są:  Robert  Luberda
       <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>.

       Polskie  tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na
       stronie  http://sourceforge.net/projects/manpages-pl/.  Jest   zgodne   z   wersją    3.71
       oryginału.