setfsgid(2)

NAZWA
setfsgid - ustawia identyfikator grupy używany przy sprawdzeniach na poziomie systemu plików

BIBLIOTEKA
Standardowa biblioteka C (libc, -lc)

SKŁADNIA
#include <sys/fsuid.h>

[[przestarzałe]] int setfsgid(gid_t fsgid);

OPIS
W Linuksie, proces może posiadać zarówno identyfikator grupy systemu plików jak i efektywny identyfikator grupy. (Typowo linuksowy) identyfikator grupy systemu plików służy do sprawdzania uprawnień przy dostępie do obiektów systemu plików, natomiast efektywny identyfikator grupy jest używany do pewnych innych sprawdzeń uprawnień (zob. credentials(7)).

Zwykle wartość identyfikatora grupy systemu plików dla procesu jest taka sama, jak jego wartość efektywnego identyfikatora grupy. Jest tak, ponieważ przy każdej zmianie efektywnego identyfikatora grupy jądro zmienia również identyfikator grupy systemu plików na taki sam, jak nowa wartość efektywnego ID grupy. Proces może spowodować, że wartość jego ID grupy systemu plików zacznie odbiegać od jego efektywnego ID grupy korzystając z setfsgid(), w celu zmiany jego ID grupy systemu plików na wartość podaną w fsgid.

setfsgid() powiedzie się tylko, jeśli wywołujący jest superużytkownikiem lub jeśli fsgid pasuje do rzeczywistego identyfikatora grupy wywołującego, efektywnego identyfikatora grupy, zapisanego set-group-ID lub aktualnego identyfikatora użytkownika systemu plików.

WARTOŚĆ ZWRACANA
Zarówno w przypadku powodzenia, jak i przy niepowodzeniu, niniejsze wywołanie zwraca poprzedni identyfikator grupy systemu plików wywołującego.

STANDARDY
Linux.

HISTORIA
Linux 1.2.

  Różnice biblioteki C/jądra
W glibc 2.15 i wcześniejszych, gdy opakowanie dla tego wywołania systemowego ustali, że argument nie może być przekazany jądru bez obcięcia liczby (ponieważ jądro jest stare i nie obsługuje 32-bitowych identyfikatorów grup), zwróci -1 i ustawi errno na EINVAL bez próby korzystania z wywołania systemowego.

UWAGI
Koncept identyfikatora grupy systemu plików oraz wywołanie systemowe setfsgid() wymyślono ze względów historycznych, które nie mają znaczenia na współczesnych jądrach Linux. W podręczniku setfsuid(2) opisano dlaczego korzystanie z setfsuid(2) i setfsgid() nie jest obecnie potrzebne.

Pierwotne linuksowe wywołania systemowe setfsgid() obsługiwały jedynie 16-bitowe identyfikatory grup. Następnie, w Linuksie 2.4 dodano setfsgid32(), obsługujące identyfikatory 32-bitowe. Funkcja opakowująca setfsgid() biblioteki glibc obsługuje te warianty pomiędzy wersjami jądra w sposób przezroczysty.

USTERKI
Przy wystąpieniu błędu, wywołujący nie otrzymuje zwrotnie żadnego wskazania, a fakt, że pomyślne i niepomyślne wywołanie zwraca tę samą wartość powoduje, że nie da się bezpośrednio ustalić, czy wywołanie powiodło się, czy też nie. Zamiast tego wywołujący musi posiłkować się sięgnięciem do wartości zwracanej przez kolejne wywołanie, takie jak setfsgid(-1) (które zawsze zawiedzie), aby ustalić, czy poprzedzające je wywołanie do setfsgid() zmieniło identyfikator grupy systemu plików. Ostatecznie, EPERM powinno być zwrócone, gdy wywołanie zawiedzie (z powodu nieposiadania przez wywołującego przywileju CAP_SETGID).

ZOBACZ TAKŻE
kill(2), setfsuid(2), capabilities(7), credentials(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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.