xenial (2) setresuid.2.gz

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.