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

NUME

       setuid - stabilește identitatea utilizatorului

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <unistd.h>

       int setuid(uid_t uid);

DESCRIERE

       setuid()  stabilește ID-ul de utilizator efectiv al procesului apelant. În cazul în care procesul apelant
       este privilegiat (mai precis: dacă procesul  are  capacitatea  CAP_SETUID  în  spațiul  său  de  nume  de
       utilizator), se stabilesc, de asemenea, UID real și set-user-ID salvat.

       În  Linux,  setuid()  este implementat ca versiunea POSIX cu caracteristica _POSIX_SAVED_IDS. Acest lucru
       permite unui program set-user-ID (altul decât root) să renunțe la toate privilegiile  de  utilizator,  să
       facă  unele lucrări fără privilegii și apoi să reangajeze ID-ul de utilizator efectiv inițial într-un mod
       sigur.

       Dacă utilizatorul este root sau dacă programul este set-user-ID-root, trebuie  să  se  acorde  o  atenție
       specială:   setuid()   verifică  ID-ul  de  utilizator  efectiv  al  apelantului  și,  dacă  acesta  este
       superutilizatorul, toate ID-urile de utilizator legate de proces sunt stabilite la  uid.  După  ce  acest
       lucru s-a întâmplat, este imposibil ca programul să recâștige privilegiile de root.

       Astfel,  un  program  set-user-ID-root  care  dorește să renunțe temporar la privilegiile de root, să își
       asume identitatea unui utilizator neprivilegiat și apoi să redobândească privilegiile de  root  nu  poate
       utiliza setuid().  Puteți realiza acest lucru cu seteuid(2).

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

ERORI-IEȘIRE

       EAGAIN Apelul  ar  schimba  UID-ul  real  al  apelantului  (adică  uid 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 uid  nu  se  potrivește  cu  ID-ul real al apelantului și acest apel ar face ca numărul de procese
              aparținând ID-ului real al utilizatorului uid să  depășească  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 dacă există această eroare); a se vedea descrierea lui EAGAIN din execve(2).

       EINVAL ID-ul de utilizator specificat în uid nu este valid în acest spațiu de nume de utilizator.

       EPERM  Utilizatorul nu este privilegiat (Linux: nu are capacitatea CAP_SETUID în spațiul său de  nume  de
              utilizator)  și  uid nu se potrivește cu UID-ul real sau cu set-user-ID-ul salvat al procesului de
              apelare.

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 cea pentru setuid()) 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

       POSIX.1-2008.

ISTORIC

       POSIX.1-2001, SVr4.

       Nu este foarte compatibil cu apelul 4.4BSD, care stabilește toate ID-urile de utilizator  reale,  salvate
       și efective.

       Apelul  de  sistem  original Linux setuid() suporta doar ID-uri de utilizator pe 16 biți. Ulterior, Linux
       2.4 a adăugat setuid32() care acceptă ID-uri pe 32 de biți.  Funcția învăluitoare glibc setuid() tratează
       în mod transparent variația dintre versiunile de kernel.

NOTE

       Linux are conceptul de ID de utilizator al sistemului de fișiere, în mod normal egal cu ID-ul efectiv  al
       utilizatorului.  Apelul  setuid() stabilește, de asemenea, ID-ul de utilizator din sistemul de fișiere al
       procesului care îl apelează. A se vedea setfsuid(2).

       Dacă uid este diferit de vechiul UID efectiv, procesului îi va fi interzis să lase descărcări de  imagine
       de memorie.

CONSULTAȚI ȘI

       getuid(2), seteuid(2), setfsuid(2), setreuid(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                                          setuid(2)