Provided by: manpages-pl-dev_4.21.0-2_all bug

NAZWA

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

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #define _GNU_SOURCE         /* See 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.

       An unprivileged process may change its 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.

       A privileged process (on Linux, one having the CAP_SETUID capability)  may  set  its  real
       UID, effective UID, and saved set-user-ID to arbitrary values.

       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 ustawiane  jest
       errno wskazując błąd.

       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).

       EINVAL Jeden   lub   więcej   docelowych   identyfikatorów   użytkownika  lub  grupy  jest
              nieprawidłowych w tej przestrzeni użytkownika.

       EPERM  The calling process is not privileged (did not have the necessary capability in its
              user namespace)  and tried to change the IDs to values that are not permitted.  For
              setresuid(), the  necessary  capability  is  CAP_SETUID;  for  setresgid(),  it  is
              CAP_SETGID.

WERSJE

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

STANDARDY

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

UWAGI

       Under HP-UX and FreeBSD, the prototype is found in <unistd.h>.  Under Linux, the prototype
       is provided since glibc 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.

   Różnice biblioteki C/jądra
       Na poziomie jądra, identyfikatory użytkownika i grupy są atrybutami przynależnymi wątkowi.
       Jednak  POSIX  wymaga,  aby  wszystkie  wątki  procesu  dzieliły  te  same  poświadczenia.
       Implementacja  wątkowania  NPTL  obsługuje wymagania POSIX za pomocą funkcji opakowujących
       dla  różnych  wywołań  systemowych  zmieniających  UID-y  i  GID-y  procesów.  Te  funkcje
       opakowujące  (w  tym  te  dla  setresuid()  i setresgid()) wykorzystują technikę opartą na
       sygnałach aby zapewnić, że gdy jeden wątek zmieni swe poświadczenia, wszystkie inne  wątki
       procesu również to uczynią. Więcej szczegółów w podręczniku nptl(7).

ZOBACZ TAKŻE

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

TŁUMACZENIE

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

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją. Bliższe informacje o warunkach licencji
       można   uzyskać   zapoznając   się   z   GNU   General   Public   License   w   wersji   3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   lub   nowszej.   Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej
       ⟨manpages-pl-list@lists.sourceforge.net⟩.