Provided by: manpages-ro-dev_4.26.0-1_all 

NUME
setfsuid - stabilește identitatea utilizatorului utilizată pentru verificările sistemului de fișiere
BIBLIOTECA
Biblioteca C standard (libc, -lc)
SINOPSIS
#include <sys/fsuid.h>
[[depreciat]] int setfsuid(uid_t fsuid);
DESCRIERE
În Linux, un proces are atât un ID de utilizator al sistemului de fișiere, cât și un ID de utilizator
efectiv. ID-ul de utilizator al sistemului de fișiere (specific Linux) este utilizat pentru verificarea
permisiunilor la accesarea obiectelor sistemului de fișiere, în timp ce ID-ul de utilizator efectiv este
utilizat pentru diverse alte tipuri de verificări ale permisiunilor (a se vedea credentials(7)).
În mod normal, valoarea ID-ului de utilizator din sistemul de fișiere al procesului este aceeași cu
valoarea ID-ului său efectiv de utilizator. Acest lucru este așa, deoarece ori de câte ori ID-ul efectiv
de utilizator al unui proces este modificat, nucleul modifică, de asemenea, ID-ul de utilizator din
sistemul de fișiere pentru a fi același cu noua valoare a ID-ului efectiv de utilizator. Un proces poate
face ca valoarea ID-ului său de utilizator din sistemul de fișiere să difere de ID-ul său efectiv de
utilizator, utilizând setfsuid() pentru a schimba ID-ul său de utilizator din sistemul de fișiere la
valoarea indicată în fsuid.
Apelurile explicite la setfsuid() și setfsgid(2) sunt (au fost) utilizate de obicei numai de programe
precum serverul Linux NFS care trebuie să schimbe ID-ul de utilizator și de grup utilizat pentru accesul
la fișiere fără o modificare corespunzătoare a ID-urilor reale și efective de utilizator și de grup. O
modificare a ID-urilor de utilizator normale pentru un program precum serverul NFS este (era) o gaură de
securitate care îl poate expune la semnale nedorite; (cu toate acestea, această problemă este istorică (a
fost odată o problemă); a se vedea mai jos).
setfsuid() va reuși numai dacă apelantul este superutilizatorul sau dacă fsuid corespunde fie ID-ului
real al utilizatorului apelantului, fie ID-ului efectiv al utilizatorului, fie ID-ului salvat al
utilizatorului stabilit, fie ID-ului curent al utilizatorului sistemului de fișiere.
VALOAREA RETURNATĂ
Atât în caz de succes, cât și în caz de eșec, acest apel returnează ID-ul anterior al utilizatorului din
sistemul de fișiere al apelantului.
STANDARDE
Linux.
ISTORIC
Linux 1.2.
În momentul în care a fost introdus acest apel de sistem, un proces putea trimite un semnal către un alt
proces cu același ID de utilizator efectiv. Acest lucru însemna că, dacă un proces privilegiat își
schimba ID-ul efectiv de utilizator în scopul verificării permisiunilor pentru fișiere, atunci putea
deveni vulnerabil la primirea de semnale trimise de un alt proces (neprivilegiat) cu același ID de
utilizator. Atributul ID utilizator al sistemului de fișiere a fost astfel adăugat pentru a permite unui
proces să își schimbe ID-ul de utilizator în scopul verificării permisiunilor de fișiere fără a deveni în
același timp vulnerabil la primirea de semnale nedorite. Începând cu Linux 2.0, gestionarea
permisiunilor de semnal este diferită (a se vedea kill(2)), rezultatul fiind că un proces își poate
schimba ID-ul de utilizator efectiv fără a fi vulnerabil la primirea de semnale de la procese nedorite.
Astfel, setfsuid() este în prezent inutil și ar trebui evitat în noile aplicații (la fel și pentru
setfsgid(2)).
Apelul de sistem original Linux setfsuid() accepta doar ID-uri de utilizator pe 16 biți. Ulterior, Linux
2.4 a adăugat setfsuid32() care acceptă ID-uri pe 32 de biți. Funcția de învăluire glibc setfsuid()
tratează în mod transparent variația dintre versiunile nucleului.
Diferențe între biblioteca C și nucleu
În glibc 2.15 și în versiunile anterioare, atunci când funcția de învăluire pentru acest apel de sistem
determină că argumentul nu poate fi transmis nucleului fără trunchierea numerelor întregi (deoarece
nucleul este vechi și nu acceptă ID-uri de utilizator pe 32 de biți), aceasta va returna -1 și va
configura errno la EINVAL fără să încerce apelul de sistem.
ERORI
Nu se returnează nici un fel de indicații de eroare către apelant, iar faptul că atât apelurile reușite,
cât și cele nereușite returnează aceeași valoare face imposibilă determinarea directă a succesului sau
eșecului apelului. În schimb, apelantul trebuie să apeleze la valoarea returnată de un apel ulterior, cum
ar fi setfsuid(-1) (care va eșua întotdeauna), pentru a determina dacă un apel anterior la setfsuid() a
schimbat ID-ul utilizatorului sistemului de fișiere. Cel puțin, EPERM ar trebui să fie returnat atunci
când apelul eșuează (deoarece apelantului îi lipsește capacitatea CAP_SETUID).
CONSULTAȚI ȘI
kill(2), setfsgid(2), capabilities(7), credentials(7)
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o
versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO
RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
ro@lists.sourceforge.net.
Pagini de manual de Linux 6.9.1 2 mai 2024 setfsuid(2)