setfsuid(2) System Calls Manual setfsuid(2) NUME setfsuid - stabilete identitatea utilizatorului utilizata pentru verificarile sistemului de fiiere BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include [[depreciat]] int setfsuid(uid_t fsuid); DESCRIERE In Linux, un proces are atat un ID de utilizator al sistemului de fiiere, cat i un ID de utilizator efectiv. ID-ul de utilizator al sistemului de fiiere (specific Linux) este utilizat pentru verificarea permisiunilor la accesarea obiectelor sistemului de fiiere, in timp ce ID-ul de utilizator efectiv este utilizat pentru diverse alte tipuri de verificari ale permisiunilor (a se vedea credentials(7)). In mod normal, valoarea ID-ului de utilizator din sistemul de fiiere al procesului este aceeai cu valoarea ID-ului sau efectiv de utilizator. Acest lucru este aa, deoarece ori de cate ori ID-ul efectiv de utilizator al unui proces este modificat, nucleul modifica, de asemenea, ID-ul de utilizator din sistemul de fiiere pentru a fi acelai cu noua valoare a ID-ului efectiv de utilizator. Un proces poate face ca valoarea ID-ului sau de utilizator din sistemul de fiiere sa difere de ID-ul sau efectiv de utilizator, utilizand setfsuid() pentru a schimba ID-ul sau de utilizator din sistemul de fiiere la valoarea indicata in fsuid. Apelurile explicite la setfsuid() i setfsgid(2) sunt (au fost) utilizate de obicei numai de programe precum serverul Linux NFS care trebuie sa schimbe ID-ul de utilizator i de grup utilizat pentru accesul la fiiere fara o modificare corespunzatoare 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 gaura de securitate care il poate expune la semnale nedorite; (cu toate acestea, aceasta problema este istorica (a fost odata o problema); a se vedea mai jos). setfsuid() va reui numai daca apelantul este superutilizatorul sau daca 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 fiiere. VALOAREA RETURNATA Atat in caz de succes, cat i in caz de eec, acest apel returneaza ID-ul anterior al utilizatorului din sistemul de fiiere al apelantului. STANDARDE Linux. ISTORIC Linux 1.2. In momentul in care a fost introdus acest apel de sistem, un proces putea trimite un semnal catre un alt proces cu acelai ID de utilizator efectiv. Acest lucru insemna ca, daca un proces privilegiat ii schimba ID-ul efectiv de utilizator in scopul verificarii permisiunilor pentru fiiere, atunci putea deveni vulnerabil la primirea de semnale trimise de un alt proces (neprivilegiat) cu acelai ID de utilizator. Atributul ID utilizator al sistemului de fiiere a fost astfel adaugat pentru a permite unui proces sa ii schimbe ID-ul de utilizator in scopul verificarii permisiunilor de fiiere fara a deveni in acelai timp vulnerabil la primirea de semnale nedorite. Incepand cu Linux 2.0, gestionarea permisiunilor de semnal este diferita (a se vedea kill(2)), rezultatul fiind ca un proces ii poate schimba ID-ul de utilizator efectiv fara a fi vulnerabil la primirea de semnale de la procese nedorite. Astfel, setfsuid() este in prezent inutil i ar trebui evitat in noile aplicaii (la fel i pentru setfsgid(2)). Apelul de sistem original Linux setfsuid() accepta doar ID-uri de utilizator pe 16 bii. Ulterior, Linux 2.4 a adaugat setfsuid32() care accepta ID-uri pe 32 de bii. Funcia de invaluire glibc setfsuid() trateaza in mod transparent variaia dintre versiunile nucleului. Diferene intre biblioteca C i nucleu In glibc 2.15 i in versiunile anterioare, atunci cand funcia de invaluire pentru acest apel de sistem determina ca argumentul nu poate fi transmis nucleului fara trunchierea numerelor intregi (deoarece nucleul este vechi i nu accepta ID-uri de utilizator pe 32 de bii), aceasta va returna -1 i va configura errno la EINVAL fara sa incerce apelul de sistem. ERORI Nu se returneaza nici un fel de indicaii de eroare catre apelant, iar faptul ca atat apelurile reuite, cat i cele nereuite returneaza aceeai valoare face imposibila determinarea directa a succesului sau eecului apelului. In schimb, apelantul trebuie sa apeleze la valoarea returnata de un apel ulterior, cum ar fi setfsuid(-1) (care va eua intotdeauna), pentru a determina daca un apel anterior la setfsuid() a schimbat ID-ul utilizatorului sistemului de fiiere. Cel puin, EPERM ar trebui sa fie returnat atunci cand apelul eueaza (deoarece apelantului ii lipsete capacitatea CAP_SETUID). CONSULTAI I kill(2), setfsgid(2), capabilities(7), credentials(7) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 setfsuid(2)