table of contents
- bookworm-backports 4.24.0-2~bpo12+1
- testing 4.24.0-2
- unstable 4.24.0-2
setresuid(2) | System Calls Manual | setresuid(2) |
NUME¶
setresuid, setresgid - stabilesc ID-ul utilizatorului sau grupului real, efectiv și salvat
BIBLIOTECA¶
Biblioteca C standard (libc, -lc)
SINOPSIS¶
#define _GNU_SOURCE /* Consultați feature_test_macros(7) */ #include <unistd.h>
int setresuid(uid_t ruid, uid_t euid, uid_t suid); int setresgid(gid_t rgid, gid_t egid, gid_t sgid);
DESCRIERE¶
setresuid() stabilește ID-ul real al utilizatorului, ID-ul efectiv al utilizatorului și ID-ul salvat de set-user-ID al procesului apelant.
Un proces neprivilegiat își poate schimba UID-ul real, UID-ul efectiv și set-user-ID-ul salvat, fiecare cu unul dintre: UID-ul real curent, UID-ul efectiv curent sau set-user-ID-ul salvat curent.
Un proces privilegiat ( în Linux, un proces care are capacitatea CAP_SETUID) își poate stabili UID-ul real, UID-ul efectiv și set-user-ID-ul salvat la valori arbitrare.
În cazul în care unul dintre argumente este egal cu -1, valoarea corespunzătoare nu se modifică.
Indiferent de modificările aduse UID-ului real, UID-ului efectiv și set-user-ID-ului salvat, UID-ul sistemului de fișiere este întotdeauna stabilit la aceeași valoare ca și UID-ul efectiv (posibil nou).
În mod complet analog, setresgid() stabilește GID-ul real, GID-ul efectiv și set-group-ID-ul salvat al procesului apelant (și modifică întotdeauna GID-ul sistemului de fișiere pentru a fi același cu GID-ul efectiv), cu aceleași restricții pentru procesele neprivilegiate.
VALOAREA RETURNATö
În caz de succes, se returnează zero. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.
Notă: există cazuri în care setresuid() poate eșua chiar și atunci când apelantul este UID 0; este o gravă eroare de securitate să se omită verificarea pentru o returnare a unui eșec de la setresuid().
ERORI-IEȘIRE¶
- EAGAIN
- Apelul ar schimba UID-ul real al apelantului (adică ruid nu se potrivește cu UID-ul real al apelantului), dar a existat un eșec temporar în alocarea structurilor de date necesare ale nucleului.
- EAGAIN
- ruid nu se potrivește cu UID-ul real al apelantului și acest apel ar aduce numărul de procese aparținând ID-ului de utilizator real ruid peste limita de resurse RLIMIT_NPROC a apelantului. Începând cu Linux 3.1, acest caz de eroare nu mai apare (dar aplicațiile robuste ar trebui să verifice această eroare); vedeți descrierea lui EAGAIN din execve(2).
- EINVAL
- Unul sau mai multe dintre ID-urile utilizatorului sau grupului țintă nu sunt valide în acest spațiu de nume de utilizator.
- EPERM
- Procesul apelant nu este privilegiat (nu avea capacitatea necesară în spațiul de nume de utilizator) și a încercat să schimbe ID-urile în valori care nu sunt permise. Pentru setresuid(), capacitatea necesară este CAP_SETUID; pentru setresgid(), aceasta este CAP_SETGID.
VERSIUNI¶
Aceste apeluri sunt disponibile în Linux începând cu Linux 2.1.44.
STANDARDE¶
Aceste apeluri nu sunt standard; ele apar, de asemenea, în HP-UX și în unele dintre BSD-uri.
NOTE¶
În HP-UX și FreeBSD, prototipul se găsește în <unistd.h>. Sub Linux, prototipul este furnizat începând cu glibc 2.3.2.
Apelurile de sistem setresuid() și setresgid() originale Linux suportau numai ID-uri de utilizator și de grup pe 16 biți. Ulterior, Linux 2.4 a adăugat setresuid32() și setresgid32(), care acceptă ID-uri pe 32 de biți. Funcțiile de învăluire glibc setresuid() și setresgid() tratează în mod transparent variațiile dintre versiunile nucleului.
Diferențe între biblioteca C și nucleu¶
La nivelul nucleului, ID-urile de utilizator și ID-urile de grup sunt un atribut pentru fiecare fir de execuție. Cu toate acestea, POSIX impune ca toate firele dintr-un proces să aibă aceleași credențiale. Implementarea „NPTL threading” se ocupă de cerințele POSIX prin furnizarea de funcții de învăluire pentru diferitele apeluri de sistem care modifică UID și GID ale proceselor. Aceste funcții învăluitoare (inclusiv cele pentru setresuid() și setresgid()) utilizează o tehnică bazată pe semnale pentru a se asigura că, atunci când un fir de execuție își schimbă acreditările, toate celelalte fire de execuție din proces își schimbă și ele acreditările. Pentru detalii, a se vedea nptl(7).
CONSULTAȚI ȘI¶
getresuid(2), getuid(2), setfsgid(2), setfsuid(2), setreuid(2), setuid(2), capabilities(7), credentials(7), user_namespaces(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.
4 decembrie 2022 | Pagini de manual de Linux 6.03 |