jammy (2) setresgid.2.gz

Provided by: manpages-pl-dev_4.13-4_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.

       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 odpowiednio ustawiane jest
       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).

       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.

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.

   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)

O STRONIE

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

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