.\" -*- coding: UTF-8 -*-
.\" Copyright (C) 1995, Thomas K. Dyas <tdyas@eden.rutgers.edu>
.\" and Copyright (C) 2013, 2019, Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Created   1995-08-06 Thomas K. Dyas <tdyas@eden.rutgers.edu>
.\" Modified  2000-07-01 aeb
.\" Modified  2002-07-23 aeb
.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
.\"     Added notes on capability requirements
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH setfsuid 2 "2 maja 2024 r." "Linux man\-pages 6.9.1" 
.SH NAZWA
setfsuid \- ustawia identyfikator użytkownika używany przy sprawdzeniach na
poziomie systemu plików
.SH BIBLIOTEKA
Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP)
.SH SKŁADNIA
.nf
\fB#include <sys/fsuid.h>\fP
.P
\fB[[przestarzałe]] int setfsuid(uid_t \fP\fIfsuid\fP\fB);\fP
.fi
.SH OPIS
W Linuksie, proces może posiadać zarówno identyfikator użytkownika systemu
plików jak i efektywny identyfikator użytkownika. (Typowo linuksowy)
identyfikator użytkownika systemu plików służy do sprawdzania uprawnień przy
dostępie do obiektów systemu plików, natomiast efektywny identyfikator
użytkownika jest używany do różnych innych sprawdzeń uprawnień
(zob. \fBcredentials\fP(7)).
.P
Zwykle wartość identyfikatora użytkownika systemu plików dla procesu jest
taka sama, jak jego wartość efektywnego identyfikatora użytkownika. Jest
tak, ponieważ przy każdej zmianie efektywnego identyfikatora użytkownika
jądro zmienia również identyfikator użytkownika systemu plików na taki sam,
jak nowa wartość efektywnego ID użytkownika. Proces może spowodować, że
wartość jego ID użytkownika systemu plików zacznie odbiegać od jego
efektywnego ID użytkownika korzystając z \fBsetfsuid\fP(), w celu zmiany jego
ID użytkownika systemu plików na wartość podaną w \fIfsuid\fP.
.P
Bezpośrednie wywołania do \fBsetfsuid\fP() i \fBsetfsgid\fP(2) są (były) zwykle
stosowane tylko przez programy takie jak linuksowy serwer NFS, który musi
zmienić identyfikator użytkownika i grupy służący do dostępu do pliku, bez
zmieniania odpowiadających mu rzeczywistych i efektywnych identyfikatorów
użytkownika i grupy. Zmienienie normalnego identyfikatora użytkownika dla
programu takiego jak serwer NFS jest (było) zagrożeniem bezpieczeństwa,
które może prowadzić do wystawienia go na działanie niechcianych sygnałów
(jednak problem ten jest tylko historyczny; zob. niżej).
.P
\fBsetfsuid\fP() powiedzie się tylko, jeśli wywołujący jest superużytkownikiem
lub jeśli \fIfsuid\fP pasuje do rzeczywistego identyfikatora użytkownika
wywołującego, efektywnego identyfikatora użytkownika, zapisanego set\-user\-ID
lub aktualnego identyfikatora użytkownika systemu plików.
.SH "WARTOŚĆ ZWRACANA"
Zarówno w przypadku powodzenia, jak i przy niepowodzeniu, niniejsze
wywołanie zwraca poprzedni identyfikator użytkownika systemu plików
wywołującego.
.SH STANDARDY
Linux.
.SH HISTORIA
.\" Linux 1.1.44
.\" and in libc since libc 4.7.6.
Linux 1.2.
.P
W momencie wprowadzenia niniejszego wywołania systemowego, jeden proces mógł
wysyłać sygnał do innego procesu o tym samym efektywnym identyfikatorze
użytkownika. Oznaczało to, że jeśli uprzywilejowany proces zmienił swój
efektywny identyfikator użytkownika w celu sprawdzenia uprawnień do pliku,
mógł być odsłonięty na otrzymywanie sygnałów wysyłanych przez inny
(nieuprzywilejowany) proces o tym samym identyfikatorze użytkownika. Z tego
względu dodano atrybut identyfikatora użytkownika systemu plików, aby
pozwolić na zmianę identyfikatora użytkownika przez proces, w celu
sprawdzenia uprawnień do pliku, bez możliwości otrzymywanie niechcianych
sygnałów. Od Linuksa 2.0 obsługa uprawnień przy sygnałach zmieniła się
(zob. \fBkill\fP(2)), w wyniku czego proces może zmienić swój efektywny
identyfikator użytkownika bez wystawiania się na otrzymywanie sygnałów od
niechcianych procesów. Z tego względu \fBsetfsuid\fP() jest obecnie
niepotrzebne i powinno się go unikać w nowych aplikacjach (tak jak
\fBsetfsgid\fP(2)).
.P
Pierwotne linuksowe wywołania systemowe \fBsetfsuid\fP() obsługiwało jedynie
16\-bitowe identyfikatory grup. Następnie, w Linuksie 2.4 dodano
\fBsetfsuid32\fP(), obsługujące identyfikatora 32\-bitowe. Funkcja opakowująca
\fBsetfsuid\fP() biblioteki glibc obsługuje te warianty pomiędzy wersjami jądra
w sposób przezroczysty.
.SS "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
użytkowników), zwróci \-1 i ustawi \fIerrno\fP na \fBEINVAL\fP bez próby
korzystania z wywołania systemowego.
.SH 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 \fIsetfsuid(\-1)\fP (które zawsze
zawiedzie), aby ustalić, czy poprzedzające je wywołanie do \fBsetfsuid\fP()
zmieniło identyfikator użytkownika systemu plików. Ostatecznie, \fBEPERM\fP
powinno być zwrócone, gdy wywołanie zawiedzie (z powodu nieposiadania przez
wywołującego przywileju \fBCAP_SETUID\fP).
.SH "ZOBACZ TAKŻE"
\fBkill\fP(2), \fBsetfsgid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7)
.PP
.SH TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika:
Michał Kułach <michal.kulach@gmail.com>
.
.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 .
