setreuid(2) System Calls Manual setreuid(2) NUME setreuid, setregid, setregid - stabilesc ID-ul real i/sau efectiv al utilizatorului sau al grupului BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include int setreuid(uid_t ruid, uid_t euid); int setregid(gid_t rgid, gid_t egid); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): setreuid(), setregid(): _XOPEN_SOURCE >= 500 || /* Incepand cu glibc 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE DESCRIERE setreuid() stabilete ID-urile de utilizator real i efectiv ale procesului apelant. Furnizarea unei valori de -1 pentru ID-ul real sau efectiv al utilizatorului foreaza sistemul sa lase acel ID neschimbat. Procesele neprivilegiate pot stabili ID-ul efectiv al utilizatorului numai la ID-ul real al utilizatorului, la ID-ul efectiv al utilizatorului sau la set-user-ID salvat. Utilizatorii neprivilegiai pot stabili doar ID-ul real al utilizatorului la ID-ul real al utilizatorului sau la ID-ul efectiv al utilizatorului. Daca ID-ul real al utilizatorului este stabilit (adica ruid nu este -1) sau daca ID-ul efectiv al utilizatorului este stabilit la o valoare diferita de ID-ul real al utilizatorului anterior, set-user-ID salvat va fi stabilit la noul ID efectiv al utilizatorului. In mod complet analog, setregid() stabilete ID-urile de grup reale i efective ale procesului apelant, iar toate cele de mai sus sunt valabile cu ,,grup" in loc de ,,utilizator". VALOAREA RETURNATA In caz de succes, se returneaza zero. In caz de eroare, se returneaza -1, iar errno este configurata pentru a indica eroarea. Nota: exista cazuri in care setreuid() poate eua chiar i atunci cand apelantul este UID 0; este o grava eroare de securitate sa se omita verificarea pentru o returnare a unui eec de la setreuid(). ERORI-IEIRE EAGAIN Apelul ar schimba UID-ul real al apelantului (adica ruid nu se potrivete cu UID-ul real al apelantului), dar a existat un eec temporar in alocarea structurilor de date necesare ale nucleului. EAGAIN ruid nu se potrivete cu UID-ul real al apelantului i acest apel ar aduce numarul de procese aparinand ID-ului de utilizator real ruid peste limita de resurse RLIMIT_NPROC a apelantului. Incepand cu Linux 3.1, acest caz de eroare nu mai apare (dar aplicaiile robuste ar trebui sa verifice aceasta eroare); vedei descrierea lui EAGAIN din execve(2). EINVAL Unul sau mai multe dintre ID-urile utilizatorului sau grupului inta nu sunt valide in acest spaiu de nume de utilizator. EPERM Procesul apelant nu este privilegiat (in Linux, nu are capacitatea necesara in spaiul de nume de utilizator): CAP_SETUID in cazul lui setreuid() sau CAP_SETGID in cazul lui setregid()) i a fost specificata o modificare, alta decat (i) schimbarea ID-ului efectiv al utilizatorului (grupului) cu ID-ul real al utilizatorului (grupului) sau (ii) stabilirea unuia la valoarea celuilalt sau (iii) stabilirea ID-ului efectiv al utilizatorului (grupului) la valoarea set-user-ID salvat (set-group-ID salvat). VERSIUNI POSIX.1 nu specifica toate modificarile UID pe care Linux le permite pentru un proces neprivilegiat. Pentru setreuid(), ID-ul efectiv al utilizatorului poate fi facut identic cu ID-ul real al utilizatorului sau cu ID-ul salvat i nu este specificat daca procesele neprivilegiate pot stabili ID-ul real al utilizatorului la ID-ul real al utilizatorului, la ID-ul efectiv al utilizatorului sau la ID-ul salvat al utilizatorului. Pentru setregid(), ID-ul real al grupului poate fi modificat la valoarea set-group-ID salvat, iar ID-ul efectiv al grupului poate fi modificat la valoarea ID-ului real al grupului sau la valoarea set-group-ID salvat. Detaliile exacte ale modificarilor de ID permise variaza de la o implementare la alta. Translated with DeepL.com (free version) POSIX.1 nu face nicio specificaie cu privire la efectul acestor apeluri asupra set-user-ID i set-group-ID salvate. STANDARDE POSIX.1-2008. ISTORIC POSIX.1-2001, 4.3BSD (a aparut pentru prima data in 4.2BSD). Stabilirea ID-ului efectiv al utilizatorului (grupului) la set-user-ID salvat (set-group-ID salvat) este posibila incepand cu Linux 1.1.37 (1.1.38). Apelurile de sistem originale Linux setreuid() i setregid() acceptau numai ID-uri de utilizator i de grup pe 16 bii. Ulterior, Linux 2.4 a adaugat setreuid32() i setregid32(), care accepta ID-uri pe 32 de bii. Funciile de invaluire glibc setreuid() i setregid() trateaza in mod transparent variaiile dintre versiunile nucleului. Diferene intre biblioteca C i nucleu La nivelul nucleului, ID-urile de utilizator i ID-urile de grup sunt un atribut pentru fiecare fir de execuie. Cu toate acestea, POSIX impune ca toate firele dintr-un proces sa aiba aceleai credeniale. Implementarea ,,NPTL threading" se ocupa de cerinele POSIX prin furnizarea de funcii de invaluire pentru diferitele apeluri de sistem care modifica UID i GID ale proceselor. Aceste funcii invaluitoare (inclusiv cele pentru setreuid() i setregid()) utilizeaza o tehnica bazata pe semnale pentru a se asigura ca, atunci cand un fir de execuie ii schimba acreditarile, toate celelalte fire de execuie din proces ii schimba i ele acreditarile. Pentru detalii, a se vedea nptl(7). CONSULTAI I getgid(2), getuid(2), seteuid(2), setgid(2), setresuid(2), setuid(2), capabilities(7), credentials(7), user_namespaces(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.12 23 iulie 2024 setreuid(2)