Scroll to navigation

seteuid(2) System Calls Manual seteuid(2)

NAZWA

seteuid, setegid - ustawia efektywny identyfikator użytkownika lub grupy

BIBLIOTEKA

Standardowa biblioteka C (libc, -lc)

SKŁADNIA

#include <unistd.h>
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 użytkownika procesu wywołującego. Nieuprzywilejowane procesy mogą ustawiać tylko efektywny identyfikator użytkownika na rzeczywisty identyfikator użytkownika, efektywny identyfikator użytkownika lub zapisany set-user-ID.

Powyższy opis stosuje się również do setegid(), po zastąpieniu słowa „użytkownik” – „grupą”.

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 seteuid() może zawieść nawet wówczas, gdy wywołujący ma UID 0. Pominięcie sprawdzenia zwrotu niepowodzenia z seteuid() jest poważnym zagrożeniem bezpieczeństwa.

BŁĘDY

Docelowy identyfikator użytkownika lub grupy nie jest prawidłowy w tej przestrzeni nazw użytkownika.
W przypadku seteuid(): proces wywołujący nie jest uprzywilejowany (nie ma przywileju CAP_SETUID w swej przestrzeni nazw użytkownika), a euid nie pasuje do obecnego rzeczywistego identyfikatora użytkownika, obecnego efektywnego identyfikatora użytkownika lub obecnego zapisanego set-user-ID.
W przypadku setegid(): proces wywołujący nie jest uprzywilejowany (nie ma przywileju CAP_SETGID w swej przestrzeni nazw użytkownika), a egid nie pasuje do obecnego rzeczywistego identyfikatora grupy, obecnego efektywnego identyfikatora grupy lub obecnego zapisanego set-group-ID.

WERSJE

Ustawianie efektywnego ID użytkownika (grupy) na podstawie zachowanego set-user-ID (zapisanego set-group-ID) jest możliwe poczynając od Linuksa 1.1.37 (1.1.38). Na nieznanym systemie należy sprawdzić _POSIX_SAVED_IDS.

W glibc 2.0, seteuid(euid) jest równoważne setreuid(-1, euid), zatem może zmienić zapisany set-user-ID. W glibc 2.1 i późniejszych, jest równoważne setresuid(-1, euid, -1), zatem nie zmienia zapisanego set-user-ID. Analogiczne uwagi stosują się wobec setegid(), z tą różnicą, że zmiana w implementacji z setregid(-1, egid) na setresgid(-1, egid, -1) nastąpiła w glibc 2.2 lub 2.3 (w zależności od architektury sprzętowej).

Zgodnie z POSIX.1, seteuid() (setegid()) nie może zezwalać, aby euid (egid) miał tę samą wartość jak obecny efektywny identyfikator użytkownika (grupy) i niektóre implementacje na to nie zezwalają.

Różnice biblioteki C/jądra

W Linuksie, seteuid() i setegid() zaimplementowano jako funkcje biblioteczne wywołujące, odpowiednio: setresuid(2) i setresgid(2).

STANDARDY

POSIX.1-2008.

HISTORIA

POSIX.1-2001, 4.3BSD.

ZOBACZ TAKŻE

geteuid(2), setresuid(2), setreuid(2), setuid(2), capabilities(7), credentials(7), user_namespaces(7)

TŁUMACZENIE

Tłumaczenie niniejszej strony podręcznika: 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 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.

2 maja 2024 r. Linux man-pages 6.9.1