setgid(2) System Calls Manual setgid(2) NAZWA setgid - ustawia identyfikator grupy BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include int setgid(gid_t gid); OPIS setgid() ustawia efektywny identyfikator grupy procesu wywolujacego. Jesli proces wywolujacy jest uprzywilejowany (precyzyjniej: jesli proces ma przywilej CAP_SETGID w swojej przestrzeni nazw uzytkownika) ustawiany jest rowniez rzeczywisty GID oraz zapisany set-group-ID. W Linuksie setgid() jest zaimplementowany tak, jak wersja POSIX, z funkcja _POSIX_SAVED_IDS. Pozwala to programom set-group-ID innym niz set-user-ID-root porzucic wszystkie swoje przywileje grupy, wykonac jakas nieuprzywilejowana prace, a nastepnie odzyskac pierwotny efektywny identyfikator grupy w bezpieczny sposob. WARTOSC ZWRACANA Po pomyslnym zakonczeniu zwracane jest zero. Po bledzie zwracane jest -1 i ustawiane errno, wskazujac blad. BLEDY EINVAL Identyfikator grupy podany w gid nie jest prawidlowy w tej przestrzeni nazw uzytkownika. EPERM Proces wywolujacy nie jest uprzywilejowany (Linux: nie ma przywileju CAP_SETGID w swej przestrzeni nazw uzytkownika), a gid nie pasuje do rzeczywistego identyfikatora grupy lub zapisanego set-group-ID procesu wywolujacego. WERSJE Roznice biblioteki C/jadra Na poziomie jadra, identyfikatory uzytkownika i grupy sa atrybutami przynaleznymi watkowi. Jednak POSIX wymaga, aby wszystkie watki procesu dzielily te same poswiadczenia. Implementacja watkowania NPTL obsluguje wymagania POSIX za pomoca funkcji opakowujacych dla roznych wywolan systemowych zmieniajacych UID-y i GID-y procesow. Te funkcje opakowujace (w tym te dla setgid()) wykorzystuja technike oparta na sygnalach aby zapewnic, ze gdy jeden watek zmieni swe poswiadczenia, wszystkie inne watki procesu rowniez to uczynia. Wiecej szczegolow w podreczniku nptl(7). STANDARDY POSIX.1-2008. HISTORIA POSIX.1-2001, SVr4. Pierwotne linuksowe wywolania systemowe setgid() obslugiwaly jedynie 16-bitowe identyfikatory grup. Nastepnie, w Linuksie 2.4 dodano setgid32(), obslugujace identyfikatory 32-bitowe. Funkcja opakowujaca setgid() biblioteki glibc obsluguje te warianty pomiedzy wersjami jadra w sposob przezroczysty. ZOBACZ TAKZE getgid(2), setegid(2), setregid(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. setgid(2)