.\" -*- coding: UTF-8 -*- .\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu) .\" and Copyright (C) 2008, 2010, 2015, Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Modified Thu Oct 31 12:04:29 1996 by Eric S. Raymond .\" Modified, 27 May 2004, Michael Kerrisk .\" Added notes on capability requirements .\" 2008-05-03, mtk, expanded and rewrote parts of DESCRIPTION and RETURN .\" VALUE, made style of page more consistent with man-pages style. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getgroups 2 "30 marca 2023 r." "Linux man\-pages 6.05.01" .SH NAZWA getgroups, setgroups \- pobiera/ustawia listę identyfikatorów grup dodatkowych .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP .PP \fBint getgroups(int \fP\fIsize\fP\fB, gid_t \fP\fIlist\fP\fB[]);\fP .PP \fB#include \fP .PP \fBint setgroups(size_t \fP\fIsize\fP\fB, const gid_t *_Nullable \fP\fIlist\fP\fB);\fP .fi .PP .RS -4 Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)): .RE .PP \fBsetgroups\fP(): .nf Od glibc 2.19: _DEFAULT_SOURCE glibc 2.19 i wcześniejsze: _BSD_SOURCE .fi .SH OPIS \fBgetgroups\fP() zwraca w \fIlist\fP identyfikatory grup dodatkowych dla wywołującego procesu. Argument \fIsize\fP powinien być ustawiony na maksymalną liczbę elementów, jakie mogą być przechowywane w buforze, na który wskazuje \fIlist\fP. Jeśli wywołujący proces jest członkiem więcej niż \fIsize\fP grup dodatkowych, wystąpi błąd. .PP Nie jest określone, czy efektywny ID grupy procesu wywołującego będzie znajdować się na zwróconej liście (zatem aplikacja powinna wywołać również \fBgetegid\fP(2) i dodać lub usunąć otrzymaną wartość). .PP Jeśli \fIsize\fP jest równe zero, to \fIlist\fP nie jest modyfikowane, lecz zwracana jest ogólna liczba dodatkowych grup procesu. Pozwala to wywołującemu określić rozmiar dynamicznie przydzielanej \fIlist\fP, do użycia w kolejnych wywołaniach do \fBgetgroups\fP(2). .PP \fBsetgroups\fP() ustawia identyfikatory grup dodatkowych procesu wywołującego. Konieczne są odpowiednie przywileje (zob. opis błędu \fBEPERM\fP poniżej). Argument \fIsize\fP określa liczbę identyfikatorów grup dodatkowych w buforze, na który wskazuje \fIlist\fP. Proces może porzucić wszystkie swoje grupy dodatkowe poniższym wywołaniem: .PP .in +4n .EX setgroups(0, NULL); .EE .in .SH "WARTOŚĆ ZWRACANA" Po pomyślnym zakończeniu \fBgetgroups\fP() zwraca liczbę grup dodatkowych. Po błędzie zwracane jest \-1 i ustawiane \fIerrno\fP wskazując błąd. .PP Po pomyślnym zakończeniu \fBsetgroups\fP() zwraca zero. Po błędzie zwracane jest \-1 i ustawiane \fIerrno\fP wskazując błąd. .SH BŁĘDY .TP \fBEFAULT\fP \fIlist\fP ma nieprawidłowy adres. .PP \fBgetgroups\fP() może dodatkowo zawieść z następującym błędem: .TP \fBEINVAL\fP \fIsize\fP jest mniejsze niż liczba grup dodatkowych, ale niezerowe. .PP \fBsetgroups\fP() może dodatkowo zawieść z następującymi błędami: .TP \fBEINVAL\fP \fIsize\fP jest większe niż \fBNGROUPS_MAX\fP (32 przed Linuksem 2.6.4; 65536 od Linuksa 2.6.4). .TP \fBENOMEM\fP Brak pamięci. .TP \fBEPERM\fP Proces wywołujący ma niewystarczające przywileje (wywołujący nie posiada przywileju (ang. capability) \fBCAP_SETGID\fP w przestrzeni nazw użytkownika, w której występuje). .TP \fBEPERM\fP (od Linuksa 3.19) Odmówiono użycia \fBsetgroups\fP() w tej przestrzeni nazw użytkownika. Więcej informacji w opisie \fI/proc/\fPpid\fI/setgroups\fP w \fBuser_namespaces\fP(7). .SH WERSJE .SS "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 \fBsetgroups\fP()) 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 \fBnptl\fP(7). .SH STANDARDY .TP \fBgetgroups\fP() POSIX.1\-2008. .TP \fBsetgroups\fP() Brak. .SH HISTORIA .TP \fBgetgroups\fP() SVr4, 4.3BSD, POSIX.1\-2001. .TP \fBsetgroups\fP() SVr4, 4.3BSD. Ponieważ \fBsetgroups\fP() wymaga przywileju, nie jest opisana w POSIX.1. .PP Pierwotne linuksowe wywołania systemowe \fBgetgroups\fP() obsługiwały jedynie 16\-bitowe identyfikatory grup. Następnie, w Linuksie 2.4 dodano \fBgetgroups32\fP(), obsługujące identyfikatora 32\-bitowe. Funkcja opakowująca \fBgetgroups\fP() biblioteki glibc obsługuje te warianty pomiędzy wersjami jądra w sposób przezroczysty. .SH UWAGI Proces może posiadać maksymalnie \fBNGROUPS_MAX\fP grup dodatkowych oprócz efektywnego ID grupy. Stała \fBNGROUPS_MAX\fP jest definiowana w \fI\fP. Zbiór grup dodatkowych jest dziedziczony po procesie rodzicielskim i jest zachowywany na przestrzeni \fBexecve\fP(2). .PP Maksymalna liczba grup dodatkowych może być odnaleziona w czasie uruchomienia za pomocą \fBsysconf\fP(3): .PP .in +4n .EX long ngroups_max; ngroups_max = sysconf(_SC_NGROUPS_MAX); .EE .in .PP Maksymalna zwracana wartość \fBgetgroups\fP() nie może być większa od powyższej. Od Linuksa 2.6.4, maksymalna liczba grup dodatkowych jest również ujawniana w typowo linuksowym pliku tylko do odczytu: \fI/proc/sys/kernel/ngroups_max\fP. .SH "ZOBACZ TAKŻE" \fBgetgid\fP(2), \fBsetgid\fP(2), \fBgetgrouplist\fP(3), \fBgroup_member\fP(3), \fBinitgroups\fP(3), \fBcapabilities\fP(7), \fBcredentials\fP(7) .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys , Andrzej Krzysztofowicz i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .