Provided by: manpages-ro-dev_4.27.0-1_all bug

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

   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).

STANDARDE

       Niciunul.

ISTORIC

       Linux 2.1.44, glibc 2.3.2. HP-UX, FreeBSD.

       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.

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.

Pagini de manual de Linux 6.9.1                    2 mai 2024                                       setresuid(2)