table of contents
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);
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¶
- EINVAL
- Docelowy identyfikator użytkownika lub grupy nie jest prawidłowy w tej przestrzeni nazw użytkownika.
- EPERM
- 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 |