seteuid(2) System Calls Manual seteuid(2) NAZWA seteuid, setegid - ustawia efektywny identyfikator uzytkownika lub grupy BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include int seteuid(uid_t euid); int setegid(gid_t egid); Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)): seteuid(), setegid(): _POSIX_C_SOURCE >= 200112L || /* glibc <= 2.19: */ _BSD_SOURCE OPIS seteuid() ustawia efektywny identyfikator uzytkownika procesu wywolujacego. Nieuprzywilejowane procesy moga ustawiac tylko efektywny identyfikator uzytkownika na rzeczywisty identyfikator uzytkownika, efektywny identyfikator uzytkownika lub zapisany set-user-ID. Powyzszy opis stosuje sie rowniez do setegid(), po zastapieniu slowa ,,uzytkownik" - ,,grupa". WARTOSC ZWRACANA Po pomyslnym zakonczeniu zwracane jest zero. Po bledzie zwracane jest -1 i ustawiane errno, wskazujac blad. Uwaga: sa przypadki, gdy seteuid() moze zawiesc nawet wowczas, gdy wywolujacy ma UID 0. Pominiecie sprawdzenia zwrotu niepowodzenia z seteuid() jest powaznym zagrozeniem bezpieczenstwa. BLEDY EINVAL Docelowy identyfikator uzytkownika lub grupy nie jest prawidlowy w tej przestrzeni nazw uzytkownika. EPERM W przypadku seteuid(): proces wywolujacy nie jest uprzywilejowany (nie ma przywileju CAP_SETUID w swej przestrzeni nazw uzytkownika), a euid nie pasuje do obecnego rzeczywistego identyfikatora uzytkownika, obecnego efektywnego identyfikatora uzytkownika lub obecnego zapisanego set-user-ID. W przypadku setegid(): proces wywolujacy nie jest uprzywilejowany (nie ma przywileju CAP_SETGID w swej przestrzeni nazw uzytkownika), a egid nie pasuje do obecnego rzeczywistego identyfikatora grupy, obecnego efektywnego identyfikatora grupy lub obecnego zapisanego set-group-ID. WERSJE Ustawianie efektywnego ID uzytkownika (grupy) na podstawie zachowanego set-user-ID (zapisanego set-group-ID) jest mozliwe poczynajac od Linuksa 1.1.37 (1.1.38). Na nieznanym systemie nalezy sprawdzic _POSIX_SAVED_IDS. W glibc 2.0, seteuid(euid) jest rownowazne setreuid(-1, euid), zatem moze zmienic zapisany set-user-ID. W glibc 2.1 i pozniejszych, jest rownowazne setresuid(-1, euid, -1), zatem nie zmienia zapisanego set-user-ID. Analogiczne uwagi stosuja sie wobec setegid(), z ta roznica, ze zmiana w implementacji z setregid(-1, egid) na setresgid(-1, egid, -1) nastapila w glibc 2.2 lub 2.3 (w zaleznosci od architektury sprzetowej). Zgodnie z POSIX.1, seteuid() (setegid()) nie moze zezwalac, aby euid (egid) mial te sama wartosc jak obecny efektywny identyfikator uzytkownika (grupy) i niektore implementacje na to nie zezwalaja. Roznice biblioteki C/jadra W Linuksie, seteuid() i setegid() zaimplementowano jako funkcje biblioteczne wywolujace, odpowiednio: setresuid(2) i setresgid(2). STANDARDY POSIX.1-2008. HISTORIA POSIX.1-2001, 4.3BSD. ZOBACZ TAKZE geteuid(2), setresuid(2), setreuid(2), setuid(2), capabilities(7), credentials(7), user_namespaces(7) TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.15 17 maja 2025 r. seteuid(2)