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.

Linux                                              2014-06-13                                       SETRESUID(2)