GETGRNAM(3)

BEZEICHNUNG
getgrnam, getgrnam_r, getgrgid, getgrgid_r - ermittelt den Eintrag in der Gruppendatei

ÜBERSICHT
#include <sys/types.h>
#include <grp.h>

struct group *getgrnam(const char *name);

struct group *getgrgid(gid_t gid);

int getgrnam_r(const char *name, struct group *grp,
          char *buf, size_t buflen, struct group **result);

int getgrgid_r(gid_t gid, struct group *grp,
          char *buf, size_t buflen, struct group **result);

Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

getgrnam_r(), getgrgid_r():
    _POSIX_C_SOURCE
        || /* Glibc-Versionen <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

BESCHREIBUNG
Die Funktion getgrnam() liefert einen Zeiger auf eine Struktur zurück, die die Felder des Eintrags in der Gruppendatenbank (beispielsweise die lokale Gruppendatei /etc/group, NIS und LDAP), der zur Gruppe name passt.

Die Funktion getgrgid() liefert einen Zeiger auf eine Struktur zurück, die die Felder des Eintrags in der Gruppendatenbank enthält, der zur Gruppe mit der ID gid passt.

Die Struktur group wird in <grp.h> wie folgt definiert:

    struct group {
        char   *gr_name;        /* Gruppenname */
        char   *gr_passwd;      /* Gruppenpasswort */
        gid_t   gr_gid;         /* Gruppenkennung */
        char  **gr_mem;         /* NULL-terminiertes Feld von Zeigern auf
                                   Namen von Gruppenmitgliedern */
    };

Weitere Informationen zu den Feldern dieser Struktur finden Sie in group(5).

Die Funktionen getgrnam_r() und getgrgid_r() beschaffen die gleichen Informationen wie getgrnam() und getgrgid(), speichern aber die abgefragte group-Struktur an dem Ort, auf den grp weist. Die String-Felder, auf die die Mitglieder der group-Struktur weisen, werden im Puffer buf der Größe buflen gespeichert. In *result wird ein Zeiger auf das Ergebnis (nach erfolgreichem Aufruf) oder NULL (falls kein Eintrag gefunden wurde oder ein Fehler auftrat) in * Ergebnis gespeichert.

Der Aufruf

    sysconf(_SC_GETGR_R_SIZE_MAX)

liefert entweder -1 ohne Änderung von errno oder die anfänglich vorgeschlagene Größe für buf zurück. (Falls diese Größe zu klein ist, schlägt der Aufruf mit ERANGE fehl. In diesem Fall kann der Aufrufende es mit einem größeren Puffer erneut versuchen.)

RÜCKGABEWERT
Die Funktionen getgrnam() und getgrgid() liefern einen Zeiger auf group-Struktur zurück. Wurde der gesuchte Eintrag nicht gefunden oder trat ein Fehler auf, wird NULL zurückgeliefert und errno entsprechend gesetzt. Wenn Sie nach dem Aufruf errno prüfen wollen, sollten er vor dem Aufruf auf 0 gesetzt werden.

Der Rückgabewert darf auf statischen Speicher zeigen und kann von nachfolgenden Aufrufen von getgrent(3), getgrgid() oder getgrnam() überschrieben werden. (Übergeben Sie den zurückgegebenen Zeiger nicht an free(3).)

Bei Erfolg geben getgrnam_r() und getgrgid_r() Null zurück und setzen*result auf grp. Wenn kein passender Gruppen-Datensatz gefunden wurde, geben diese Funktionen 0 zurück und speichern in *result NULL. Im Fehlerfall wird eine Fehlernummer zurückgegeben und wiederum NULL in *result gespeichert.

FEHLER

0 oder ENOENT oder ESRCH oder EBADF oder EPERM oder …
    Der angegebene name oder die gid wurde nicht gefunden.

EINTR
    Ein Signal wurde abgefangen; siehe signal(7).

EIO E/A-Fehler (engl. I/O).

EMFILE
    Die Beschränkung pro Prozess der Anzahl offener Datei-Deskriptoren wurde erreicht.

ENFILE
    Die systemweite Beschränkung für die Gesamtzahl offener Dateien wurde erreicht.

ENOMEM
    Es ist nicht ausreichend Speicher für die Bereitstellung einer group-Struktur vorhanden.

ERANGE
    Zu wenig Pufferspeicher bereitgestellt.

DATEIEN

/etc/group
    lokale Gruppendatenbank-Datei

ATTRIBUTE
Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
Schnittstelle | Attribut | Wert
getgrnam() | Multithread-Fähigkeit | MT-Unsafe race:grnam locale
getgrgid() | Multithread-Fähigkeit | MT-Unsafe race:grgid locale
getgrnam_r(), getgrgid_r() | Multithread-Fähigkeit | MT-Safe locale

KONFORM ZU
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.

ANMERKUNGEN
Die oben unter »RÜCKGABEWERT« gegebene Formulierung stammt aus POSIX.1. Es ruft im Fehlerfall nicht »not found« auf und legt daher nicht fest, welchen Wert errno in dieser Situation haben könnte. Aber das macht es unmöglich, Fehler zu erkennen. Man könnte argumentieren, dass nach POSIX errno unverändert bleiben sollten, wenn ein Eintrag nicht gefunden wird. Experimente auf verschiedenen UNIX-ähnlichen Systemen zeigen, dass in dieser Situation viele verschiedene Werte auftreten: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM und wahrscheinlich weitere.

SIEHE AUCH
endgrent(3), fgetgrent(3), getgrent(3), getpwnam(3), setgrent(3), group(5)

KOLOPHON
Diese Seite ist Teil der Veröffentlichung 4.16 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> und Mario Blättermann <mario.blaettermann@gmail.com> erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.