.\" -*- coding: UTF-8 -*- .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-1.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH capget 2 "17 mai 2025" "Pagini de manual de Linux 6.15" .SH NUME capget, capset \- stabilește/obține capacitățile firului (firelor) .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP /* Definirea constantelor \fBCAP_*\fP \fB și _LINUX_CAPABILITY_*\fP */ \fB#include \fP /* Definirea constantelor \fBSYS_*\fP */ \fB#include \fP .P \fBint syscall(SYS_capget, cap_user_header_t \fP\fIhdrp\fP\fB,\fP \fB cap_user_data_t \fP\fIdatap\fP\fB);\fP \fBint syscall(SYS_capset, cap_user_header_t \fP\fIhdrp\fP\fB,\fP \fB const cap_user_data_t \fP\fIdatap\fP\fB);\fP .fi .P \fINotă\fP: Nu există nicio funcție învăluitoare (wrapper) glibc pentru aceste apeluri de sistem astfel că este necesară utilizarea a \fBsyscall\fP(2). .SH DESCRIERE Aceste două apeluri de sistem reprezintă interfața brută a nucleului pentru obținerea și definirea capacităților firelor. Nu numai că aceste apeluri de sistem sunt specifice Linux\-ului, dar API\-ul nucleului este posibil să se schimbe și utilizarea acestor apeluri de sistem (în special formatul tipurilor \fIcap_user_*_t\fP) este supusă extinderii cu fiecare revizuire a nucleului, dar programele vechi vor continua să funcționeze. .P .\" Interfețele portabile sunt \fBcap_set_proc\fP(3) și \fBcap_get_proc\fP(3); dacă este posibil, ar trebui să utilizați aceste interfețe în aplicații; a se vedea secțiunea NOTE. .SS "Detalii actuale" Acum că ați fost avertizați, câteva detalii despre nucleul curent. Structurile sunt definite după cum urmează. .P .in +4n .EX .\" commit e338d263a76af78fe8f38a72131188b58fceb591 .\" Added 64 bit capability support .\" commit ca05a99a54db1db5bca72eccb5866d2a86f8517f #define _LINUX_CAPABILITY_VERSION_1 0x19980330 #define _LINUX_CAPABILITY_U32S_1 1 \& /* V2 adăugată în Linux 2.6.25; depreciată */ #define _LINUX_CAPABILITY_VERSION_2 0x20071026 #define _LINUX_CAPABILITY_U32S_2 2 \& /* V3 adăugată în Linux 2.6.26 */ #define _LINUX_CAPABILITY_VERSION_3 0x20080522 #define _LINUX_CAPABILITY_U32S_3 2 \& typedef struct __user_cap_header_struct { __u32 version; int pid; } *cap_user_header_t; \& typedef struct __user_cap_data_struct { __u32 effective; __u32 permitted; __u32 inheritable; } *cap_user_data_t; .EE .in .P Câmpurile \fIeffective\fP, \fIpermitted\fP și \fIinheritable\fP sunt măști de biți ale capacităților definite în \fBcapabilities\fP(7). Rețineți că valorile \fBCAP_*\fP sunt indexuri de biți și trebuie să fie deplasate înainte de a fi adăugate în câmpurile de biți. Pentru a defini structurile care trebuie transmise apelului de sistem, trebuie să utilizați numele \fIstruct __user_cap_header_struct\fP și \fIstruct __user_cap_data_struct\fP deoarece typedefs sunt doar indicatori. .P Nucleele anterioare Linux 2.6.25 preferă capacitățile pe 32 de biți cu versiunea \fB_LINUX_CAPABILITY_VERSION_1\fP. Linux 2.6.25 a adăugat seturi de capacități pe 64 de biți, cu versiunea \fB_LINUX_CAPABILITY_VERSION_2\fP. A existat, totuși, o eroare API, iar Linux 2.6.26 a adăugat \fB_LINUX_CAPABILITY_VERSION_3\fP pentru a rezolva problema. .P Rețineți că capacitățile pe 64 de biți utilizează \fIdatap[0]\fP și \fIdatap[1]\fP, în timp ce capacitățile pe 32 de biți utilizează numai \fIdatap[0]\fP. .P Pe nucleele care oferă suport pentru capacitățile fișierelor (suport pentru capacitățile VFS), aceste apeluri de sistem se comportă ușor diferit. Acest suport a fost adăugat ca opțiune în Linux 2.6.24 și a devenit fix (neopțional) în Linux 2.6.33. .P Pentru apelurile \fBcapget\fP(), se pot sonda capacitățile oricărui proces prin specificarea ID\-ului acestuia cu valoarea câmpului \fIhdrp\->pid\fP. .P .\" Pentru detalii privind datele, consultați \fBcapabilities\fP(7). .SS "Cu suport pentru capacitățile VFS" .\" Capacitățile VFS utilizează un atribut extins de fișier (a se vedea \fBxattr\fP(7)) pentru a permite atașarea capacităților la executabile. Acest model de privilegii elimină suportul nucleului pentru stabilirea asincronă de către un proces a capacităților altuia. Adică, pe nucleele care acceptă capacitățile VFS, atunci când se apelează \fBcapset\fP(), singurele valori permise pentru \fIhdrp\->pid\fP sunt 0 sau, echivalent, valoarea returnată de \fBgettid\fP(2). .SS "Fără suport pentru capacitățile VFS" În cazul nucleelor mai vechi care nu oferă suport pentru capacitățile VFS, \fBcapset\fP() poate fi utilizat, dacă apelantul are capacitatea \fBCAP_SETPCAP\fP, pentru a modifica nu numai capacitățile apelantului, ci și capacitățile altor fire. Apelul operează asupra capacităților firului specificat de câmpul \fIpid\fP din \fIhdrp\fP atunci când acesta este diferit de zero, sau asupra capacităților firului apelant dacă \fIpid\fP este 0. Dacă \fIpid\fP se referă la un proces cu un singur fir, atunci \fIpid\fP poate fi specificat ca un ID de proces tradițional; operarea asupra unui fir al unui proces cu mai multe fire necesită un ID de fir de tipul celui returnat de \fBgettid\fP(2). Pentru \fBcapset\fP(), \fIpid\fP poate fi de asemenea: \-1, ceea ce înseamnă efectuarea modificării pe toate firele de execuție, cu excepția apelantului și a lui \fBinit\fP(1); sau o valoare mai mică decât \-1, caz în care modificarea se aplică tuturor membrilor grupului de procese al cărui ID este \fI\-pid\fP. .SH "VALOAREA RETURNATĂ" În caz de succes, se returnează zero. În caz de eroare, se returnează \-1, iar \fIerrno\fP este configurată pentru a indica eroarea. .P Apelurile eșuează cu eroarea \fBEINVAL\fP și definesc câmpul \fIversion\fP din \fIhdrp\fP la valoarea preferată de nucleu \fB_LINUX_CAPABILITY_VERSION_?\fP atunci când este specificată o valoare \fIversion\fP neacceptată. În acest fel, se poate afla care este revizuirea curentă preferată a capacității. .SH ERORI\-IEȘIRE .TP \fBEFAULT\fP Adresă de memorie greșită. \fIhdrp\fP nu trebuie să fie NULL. \fIdatap\fP poate fi NULL numai atunci când utilizatorul încearcă să determine formatul preferat al versiunii capacităților acceptate de nucleu. .TP \fBEINVAL\fP Unul dintre argumente nu a fost valid. .TP \fBEPERM\fP S\-a încercat adăugarea unei capacități la setul permis sau definirea unei capacități în setul efectiv care nu este în setul permis. .TP \fBEPERM\fP S\-a încercat să se adauge o capacitate la setul moștenit și fie: .RS .IP \[bu] 3 capacitatea respectivă nu se afla în setul de limitare al apelantului; fie .IP \[bu] capacitatea nu se afla în setul permis al apelantului și apelantul nu avea capacitatea \fBCAP_SETPCAP\fP în setul său efectiv. .RE .TP \fBEPERM\fP Apelantul a încercat să utilizeze \fBcapset\fP() pentru a modifica capacitățile unui alt fir de execuție decât el însuși, dar nu avea suficiente privilegii. Pentru nucleele care acceptă capacitățile VFS, acest lucru nu este permis niciodată. Pentru nucleele fără suport VFS, este necesară capacitatea \fBCAP_SETPCAP\fP. O eroare în nucleele anterioare Linux 2.6.11 a făcut ca această eroare să poată apărea și în cazul în care un fir fără această capacitate încerca să își schimbe propriile capacități specificând câmpul \fIpid\fP ca o valoare diferită de zero (adică valoarea returnată de \fBgetpid\fP(2)) în loc de 0. .TP \fBESRCH\fP Nu există un astfel de fir. .SH STANDARDE Linux. .SH NOTE Interfața portabilă pentru funcțiile de interogare și definire a capacităților este oferită de biblioteca \fIlibcap\fP și este disponibilă aici: .br .UR http://git.kernel.org/cgit\:/linux\:/kernel\:/git\:/morgan\:\:/libcap.git .UE .SH "CONSULTAȚI ȘI" \fBclone\fP(2), \fBgettid\fP(2), \fBcapabilities\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .