plucky (2) setresgid.2.gz

Provided by: manpages-pl-dev_4.25.1-1_all bug

NAZWA

       setresuid, setresgid - ustawia rzeczywisty, efektywny i zachowany identyfikator użytkownika lub grupy

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #define _GNU_SOURCE         /* Zob. 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ć swój rzeczywisty UID, efektywny UID  i  zachowany  set-user-ID  na
       jeden z następujących: bieżący rzeczywisty UID, bieżący efektywny UID lub bieżący zachowany set-user-ID.

       Proces  uprzywilejowany  (w  Linuksie  —  mający  przywilej  CAP_SETUID  (ang.  capatility)) 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,  UID  systemu  plików
       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 GID systemu plików 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 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  Proces  wywołujący  nie  jest  procesem  uprzywilejowanym  (nie ma koniecznego przywileju w swojej
              przestrzeni nazw użytkownika) i próbował ustawić niedozwoloną wartość któregoś z  identyfikatorów.
              W  przypadku  setresuid()  koniecznym przywilejem jest CAP_SETUID; w przypadku setresgid() jest to
              CAP_SETGID.

WERSJE

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

STANDARDY

       Brak.

HISTORIA

       Linux 2.1.44, glibc 2.3.2.  HP-UX, FreeBSD.

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