.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (C) 2008, Linux Foundation, written by Michael Kerrisk .\" .\" .\" A few pieces remain from an earlier version written in .\" 2002 by Walter Harms (walter.harms@informatik.uni-oldenburg.de) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getgrouplist 3 "20 iulie 2023" "Pagini de manual de Linux 6.05.01" .SH NUME getgrouplist \- obține lista de grupuri din care face parte un utilizator .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH REZUMAT .nf \fB#include \fP .PP \fBint getgrouplist(const char *\fP\fIuser\fP\fB, gid_t \fP\fIgroup\fP\fB,\fP \fB gid_t *\fP\fIgroups\fP\fB, int *\fP\fIngroups\fP\fB);\fP .fi .PP .RS -4 Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați \fBfeature_test_macros\fP(7)): .RE .PP \fBgetgrouplist\fP(): .nf Începând cu glibc 2.19: _DEFAULT_SOURCE glibc 2.19 și versiunile anterioare: _BSD_SOURCE .fi .SH DESCRIERE Funcția \fBgetgrouplist\fP() analizează baza de date a grupurilor (a se vedea \fBgroup\fP(5)) pentru a obține lista grupurilor din care face parte \fIuser\fP. Până la \fI*ngroups\fP din aceste grupuri sunt returnate în matricea \fIgroups\fP. .PP Dacă nu se află printre grupurile definite pentru \fIuser\fP în baza de date a grupurilor, atunci \fIgroup\fP este inclus în lista de grupuri returnată de \fBgetgrouplist\fP(); de obicei, acest argument este specificat ca fiind ID\-ul grupului din înregistrarea parolei pentru \fIuser\fP. .PP Argumentul \fIngroups\fP este un argument valoare\-rezultat: la returnare conține întotdeauna numărul de grupuri găsite pentru \fIuser\fP, inclusiv \fIgroup\fP; această valoare poate fi mai mare decât numărul de grupuri stocate în \fIgroups\fP. .SH "VALOAREA RETURNATĂ" Dacă numărul de grupuri din care face parte \fIuser\fP este mai mic sau egal cu \fI*ngroups\fP, atunci se returnează valoarea \fI*ngroups\fP. .PP Dacă utilizatorul este membru a mai mult de \fI*ngroups\fP grupuri, atunci \fBgetgrouplist\fP() returnează \-1. În acest caz, valoarea returnată în \fI*ngroups\fP poate fi utilizată pentru a redimensiona memoria tampon pasată la un apel ulterior la \fBgetgrouplist\fP(). .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBgetgrouplist\fP() T} Siguranța firelor MT\-Safe locale .TE .sp 1 .SH STANDARDE Niciunul. .SH ISTORIC glibc 2.2.4. .SH ERORI Înainte de glibc 2.3.3, implementarea acestei funcții conține o eroare de depășire a memoriei tampon: aceasta returnează lista completă a grupurilor pentru utilizatorul \fIuser\fP în matricea \fIgroups\fP, chiar și atunci când numărul de grupuri depășește \fI*ngroups\fP. .SH EXEMPLE Programul de mai jos afișează lista de grupuri pentru utilizatorul menționat în primul său argument de linie de comandă. Al doilea argument din linia de comandă specifică valoarea lui \fIngroups\fP care trebuie furnizată lui \fBgetgrouplist\fP(). Următoarea sesiune shell prezintă exemple de utilizare a acestui program: .PP .in +4n .EX $\fB ./a.out cecilia 0\fP getgrouplist() returned \-1; ngroups = 3 $\fB ./a.out cecilia 3\fP ngroups = 3 16 (dialout) 33 (video) 100 (users) .EE .in .SS "Sursa programului" .\" SRC BEGIN (getgrouplist.c) \& .EX #include #include #include #include \& int main(int argc, char *argv[]) { int ngroups; struct passwd *pw; struct group *gr; gid_t *groups; \& if (argc != 3) { fprintf(stderr, "Utilizare: %s \en", argv[0]); exit(EXIT_FAILURE); } \& ngroups = atoi(argv[2]); \& groups = malloc(sizeof(*groups) * ngroups); if (groups == NULL) { perror("malloc"); exit(EXIT_FAILURE); } \& /* Obține structura passwd (conține primul ID de grup pentru utilizator). */ \& pw = getpwnam(argv[1]); if (pw == NULL) { perror("getpwnam"); exit(EXIT_SUCCESS); } \& /* Preluarea listei de grupuri. */ \& if (getgrouplist(argv[1], pw\->pw_gid, groups, &ngroups) == \-1) { fprintf(stderr, "getgrouplist() returned \-1; ngroups = %d\en", ngroups); exit(EXIT_FAILURE); } \& /* Afișează lista grupurilor recuperate, împreună cu numele grupurilor. */ \& fprintf(stderr, "ngroups = %d\en", ngroups); for (size_t j = 0; j < ngroups; j++) { printf("%d", groups[j]); gr = getgrgid(groups[j]); if (gr != NULL) printf(" (%s)", gr\->gr_name); printf("\en"); } \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "CONSULTAȚI ȘI" \fBgetgroups\fP(2), \fBsetgroups\fP(2), \fBgetgrent\fP(3), \fBgroup_member\fP(3), \fBgroup\fP(5), \fBpasswd\fP(5) .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 .