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

NUME

       setreuid, setregid, setregid - stabilesc ID-ul real și/sau efectiv al utilizatorului sau al grupului

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <unistd.h>

       int setreuid(uid_t ruid, uid_t euid);
       int setregid(gid_t rgid, gid_t egid);

   Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

       setreuid(), setregid():
           _XOPEN_SOURCE >= 500
               || /* Începând cu glibc 2.19: */ _DEFAULT_SOURCE
               || /* glibc <= 2.19: */ _BSD_SOURCE

DESCRIERE

       setreuid() stabilește ID-urile de utilizator real și efectiv ale procesului apelant.

       Furnizarea  unei  valori  de -1 pentru ID-ul real sau efectiv al utilizatorului forțează sistemul să 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 neprivilegiați pot stabili doar ID-ul real al utilizatorului la ID-ul real al utilizatorului
       sau la ID-ul efectiv al utilizatorului.

       Dacă  ID-ul  real  al  utilizatorului  este  stabilit  (adică  ruid nu este -1) sau dacă ID-ul efectiv al
       utilizatorului este stabilit la o valoare diferită de ID-ul real al utilizatorului anterior,  set-user-ID
       salvat va fi stabilit la noul ID efectiv al utilizatorului.

       În  mod  complet analog, setregid() stabilește ID-urile de grup reale și efective ale procesului apelant,
       iar toate cele de mai sus sunt valabile cu „grup” în loc de „utilizator”.

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

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 (în Linux, nu are capacitatea necesară în spațiul de nume de
              utilizator): CAP_SETUID în cazul lui setreuid() sau CAP_SETGID în cazul lui setregid()) și a  fost
              specificată  o  modificare, alta decât (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 specifică toate modificările UID pe care Linux le  permite  pentru  un  proces  neprivilegiat.
       Pentru setreuid(), ID-ul efectiv al utilizatorului poate fi făcut identic cu ID-ul real al utilizatorului
       sau  cu  ID-ul  salvat  și  nu  este  specificat  dacă 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  modificărilor  de  ID  permise  variază  de  la  o
       implementare la alta.

       Translated with DeepL.com (free version)

       POSIX.1  nu  face  nicio  specificație  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 apărut pentru prima dată în 4.2BSD).

       Stabilirea ID-ului efectiv al utilizatorului (grupului) la set-user-ID salvat (set-group-ID salvat)  este
       posibilă începând 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 biți. Ulterior, Linux 2.4 a adăugat setreuid32() și setregid32(), care acceptă ID-uri pe 32 de
       biți. Funcțiile de învăluire glibc setreuid() și setregid() 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  setreuid()  și  setregid())  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

       getgid(2), getuid(2), seteuid(2), setgid(2), setresuid(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                                        setreuid(2)