table of contents
setgid(2) | System Calls Manual | setgid(2) |
NAZWA¶
setgid - ustawia identyfikator grupy
BIBLIOTEKA¶
Standardowa biblioteka C (libc, -lc)
SKŁADNIA¶
#include <unistd.h>
int setgid(gid_t gid);
OPIS¶
setgid() ustawia efektywny identyfikator grupy procesu wywołującego. Jeśli proces wywołujący jest uprzywilejowany (precyzyjniej: jeśli proces ma przywilej CAP_SETGID w swojej przestrzeni nazw użytkownika) ustawiany jest również rzeczywisty GID oraz zapisany set-group-ID.
W Linuksie setgid() jest zaimplementowany tak, jak wersja POSIX, z funkcją _POSIX_SAVED_IDS. Pozwala to programom set-group-ID innym niż set-user-ID-root porzucić wszystkie swoje przywileje grupy, wykonać jakąś nieuprzywilejowaną pracę, a następnie odzyskać pierwotny efektywny identyfikator grupy w bezpieczny sposób.
WARTOŚĆ ZWRACANA¶
Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest -1 i ustawiane errno, wskazując błąd.
BŁĘDY¶
- EINVAL
- Identyfikator grupy podany w gid nie jest prawidłowy w tej przestrzeni nazw użytkownika.
- EPERM
- Proces wywołujący nie jest uprzywilejowany (Linux: nie ma przywileju CAP_SETGID w swej przestrzeni nazw użytkownika), a gid nie pasuje do rzeczywistego identyfikatora grupy lub zapisanego set-group-ID procesu wywołującego.
WERSJE¶
Różnice biblioteki C/jądra¶
Na poziomie jądra, identyfikatory użytkownika i grupy są atrybutami przynależnymi wątkowi. Jednak POSIX wymaga, aby wszystkie wątki procesu dzieliły te same poświadczenia. Implementacja wątkowania NPTL obsługuje wymagania POSIX za pomocą funkcji opakowujących dla różnych wywołań systemowych zmieniających UID-y i GID-y procesów. Te funkcje opakowujące (w tym te dla setgid()) wykorzystują technikę opartą na sygnałach aby zapewnić, że gdy jeden wątek zmieni swe poświadczenia, wszystkie inne wątki procesu również to uczynią. Więcej szczegółów w podręczniku nptl(7).
STANDARDY¶
POSIX.1-2008.
HISTORIA¶
POSIX.1-2001, SVr4.
Pierwotne linuksowe wywołania systemowe setgid() obsługiwały jedynie 16-bitowe identyfikatory grup. Następnie, w Linuksie 2.4 dodano setgid32(), obsługujące identyfikatory 32-bitowe. Funkcja opakowująca setgid() biblioteki glibc obsługuje te warianty pomiędzy wersjami jądra w sposób przezroczysty.
ZOBACZ TAKŻE¶
getgid(2), setegid(2), setregid(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 |