.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" References consulted: .\" Linux libc source code .\" Lewine's "POSIX Programmer's Guide" (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" .\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) .\" Modified 1996-05-27 by Martin Schulze (joey@linux.de) .\" Modified 2003-11-15 by aeb .\" 2008-11-07, mtk, Added an example program for getpwnam_r(). .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getpwnam 3 "20. Juli 2023" "Linux man\-pages 6.05.01" .SH BEZEICHNUNG getpwnam, getpwnam_r, getpwuid, getpwuid_r \- Eintrag in Passwortdatei abfragen .SH BIBLIOTHEK Standard\-C\-Bibliothek (\fIlibc\fP, \fI\-lc\fP) .SH ÜBERSICHT .nf \fB#include \fP \fB#include \fP .PP \fBstruct passwd *getpwnam(const char *\fP\fIName\fP\fB);\fP \fBstruct passwd *getpwuid(uid_t \fP\fIuid\fP\fB);\fP .PP \fBint getpwnam_r(const char *restrict \fP\fIName\fP\fB, struct passwd *restrict \fP\fIpwd\fP\fB,\fP \fB char \fP\fIPuffer\fP\fB[restrict .\fP\fIPuffergröße\fP\fB], size_t \fP\fIPuffergröße\fP\fB,\fP \fB struct passwd **restrict \fP\fIErgebnis\fP\fB);\fP \fBint getpwuid_r(uid_t \fP\fIuid\fP\fB, struct passwd *restrict \fP\fIpwd\fP\fB,\fP \fB char \fP\fIPuffer\fP\fB[restrict .\fP\fIPuffergröße\fP\fB], size_t \fP\fIPuffergröße\fP\fB,\fP \fB struct passwd **restrict \fP\fIErgebnis\fP\fB);\fP .fi .PP .RS -4 Mit Glibc erforderliche Feature\-Test\-Makros (siehe \fBfeature_test_macros\fP(7)): .RE .PP \fBgetpwnam_r\fP(), \fBgetpwuid_r\fP(): .nf _POSIX_C_SOURCE || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .fi .SH BESCHREIBUNG Die Funktion \fBgetpwnam\fP() gibt einen Zeiger auf eine Struktur zurück, die aus einem Datensatz herausgelöste Felder aus der Passwort\-Datenbank enthält (z.B. die lokale Passwortdatei, NIS und LDAP), die zum Benutzername \fIName\fP passen. .PP Die Funktion \fBgetpwnam\fP() gibt einen Zeiger auf eine Struktur zurück, die aus einem Datensatz herausgelöste Felder aus der Passwort\-Datenbank enthält, die zur Benutzerkennung \fIuid\fP passen. .PP Die Struktur \fIpasswd\fP ist in \fI\fP wie folgt definiert: .PP .in +4n .EX struct passwd { char *pw_name; /* Benutzername */ char *pw_passwd; /* Passwort des Benutzers */ uid_t pw_uid; /* Benutzerkennung */ gid_t pw_gid; /* Gruppenkennung */ char *pw_gecos; /* Benutzerinformationen */ char *pw_dir; /* Home\-Verzeichnis */ char *pw_shell; /* Anmelde\-Shell */ }; .EE .in .PP Weitere Informationen über die Felder dieser Struktur finden Sie unter \fBpasswd\fP(5). .PP Die Funktionen \fBgetpwnam_r\fP() und \fBgetpwuid_r\fP() erhalten die gleichen Informationen wie \fBgetpwnam\fP() und \fBgetpwuid\fP(), speichern aber die empfangene \fIpasswd\fP\-Struktur an dem Platz, auf den \fIpwd\fP zeigt. Die Zeichenkettenfelder, auf die die Mitglieder der \fIpasswd\fP\-Struktur zeigen, werden im Puffer \fIPuffer\fP der Länge \fIPuffergröße\fP gespeichert. Ein Zeiger auf das Ergebnis (im Erfolgsfall) oder NULL (im Fall, dass kein Eintrag gefunden wurde oder ein Fehler auftrat) wird in \fI*Ergebnis\fP gespeichert. .PP Der Aufruf .PP .in +4n .EX sysconf(_SC_GETPW_R_SIZE_MAX) .EE .in .PP liefert entweder \-1 ohne Änderung von \fIerrno\fP oder die anfänglich vorgeschlagene Größe für \fIPuffer\fP zurück. (Falls diese Größe zu klein ist, schlägt der Aufruf mit \fBERANGE\fP fehl. In diesem Fall kann der Aufrufende es mit einem größeren Puffer erneut versuchen.) .SH RÜCKGABEWERT Die Funktionen \fBgetpwnam\fP() und \fBgetpwuid\fP() geben einen Zeiger auf eine \fIpasswd\fP\-Struktur oder NULL zurück, falls kein passender Eintrag gefunden wird oder ein Fehler auftritt. Wenn ein Fehler auftritt wird \fIerrno\fP gesetzt, um den Fehler anzuzeigen. Falls \fIerrno\fP nach dem Aufruf geprüft werden soll, sollte es vor dem Aufruf auf Null gesetzt werden. .PP Der Rückgabewert könnte auf einen statischen Bereich zeigen und von nachfolgenden Aufrufen von \fBgetpwent\fP(3), \fBgetpwnam\fP() oder \fBgetpwuid\fP(3) überschrieben werden. (Übergeben Sie den zurückgegebenen Zeiger nicht an \fBfree\fP(3).) .PP Bei Erfolg geben \fBgetpwnam_r\fP() und \fBgetpwuid_r\fP() Null zurück und setzen \fI*Ergebnis\fP auf \fIpwd\fP. Falls kein passender Passwort\-Datensatz gefunden wurde, geben diese Funktionen 0 zurück und speichern NULL in \fI*Ergebnis\fP. Im Fall eines Fehlers wird eine Fehlernummer zurückgegeben und NULL in \fI*Ergebnis\fP gespeichert. .SH FEHLER .TP \fB0\fP oder \fBENOENT\fP oder \fBESRCH\fP oder \fBEBADF\fP oder \fBEPERM\fP oder … Der angegebene \fIName\fP oder die \fIuid\fP wurde nicht gefunden .TP \fBEINTR\fP Ein Signal wurde abgefangen; siehe \fBsignal\fP(7). .TP \fBEIO\fP E/A\-Fehler (engl. I/O). .TP \fBEMFILE\fP Die Beschränkung pro Prozess der Anzahl offener Datei\-Deskriptoren wurde erreicht. .TP \fBENFILE\fP Die systemweite Beschränkung für die Gesamtzahl offener Dateien wurde erreicht. .TP \fBENOMEM\fP .\" not in POSIX .\" This structure is static, allocated 0 or 1 times. No memory leak. (libc45) Der Speicher reicht nicht aus, um ihn für die Struktur \fIpasswd\fP zu reservieren. .TP \fBERANGE\fP Zu wenig Pufferspeicher bereitgestellt. .SH ANMERKUNGEN Die Benutzer\-Passwortdatenbank bezieht sich meistens auf \fI/etc/passwd\fP. Bei aktuellen Systemen bezieht sie sich jedoch außerdem auf netzwerkweite Datenbanken, die NIS, LDAP und andere lokale Datenbanken benutzen. Dies ist in \fI/etc/nsswitch.conf\fP konfiguriert. .SH DATEIEN .TP \fI/etc/passwd\fP lokale Passwortdatenbank .TP \fI/etc/nsswitch.conf\fP Konfigurationsdatei für Systemdatenbanken und Namens\-Dienst\-Umschalter (»Name Service Switch«) .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lb lb lbx l l l. Schnittstelle Attribut Wert T{ .na .nh \fBgetpwnam\fP() T} Multithread\-Fähigkeit T{ .na .nh MT\-Unsicher race:pwnam locale T} T{ .na .nh \fBgetpwuid\fP() T} Multithread\-Fähigkeit T{ .na .nh MT\-Unsicher race:pwuid locale T} T{ .na .nh \fBgetpwnam_r\fP(), \fBgetpwuid_r\fP() T} Multithread\-Fähigkeit T{ .na .nh MT\-Sicher locale T} .TE .sp 1 .SH VERSIONEN Das Feld \fIpw_gecos\fP ist in POSIX nicht spezifiziert, aber in den meisten Implementierungen vorhanden. .SH STANDARDS POSIX.1\-2008. .SH GESCHICHTE POSIX.1\-2001, SVr4, 4.3BSD. .SH ANMERKUNGEN .\" more precisely: .\" AIX 5.1 - gives ESRCH .\" OSF1 4.0g - gives EWOULDBLOCK .\" libc, glibc up to glibc 2.6, Irix 6.5 - give ENOENT .\" since glibc 2.7 - give 0 .\" FreeBSD 4.8, OpenBSD 3.2, NetBSD 1.6 - give EPERM .\" SunOS 5.8 - gives EBADF .\" Tru64 5.1b, HP-UX-11i, SunOS 5.7 - give 0 Die unter »RÜCKGABEWERT« angegebene Formulierung stammt von POSIX.1\-2001. Sie lautet nicht Fehler »nicht gefunden« und gibt daher nicht an, welchen Wert \fIerrno\fP in dieser Situation haben könnte. Dies macht es aber unmöglich Fehler zu erkennen. Es kann argumentiert werden, dass \fIerrno\fP von POSIX unverändert bleiben sollte, wenn ein Eintrag nicht gefunden wird. Experimente auf verschiedenen UNIX\-Systemen zeigen aber, dass viele verschieden Werte in dieser Situation auftreten: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM und wahrscheinlich andere. .PP Das Feld \fIpw_dir\fP enthält den Namen des anfänglichen Arbeitsverzeichnisses des Benutzers. Anmeldeprogramme benutzen diesen Wert, um die Umgebungsvariable \fBHOME\fP für die Anmelde\-Shell zu initialisieren. Eine Anwendung, die das Home\-Verzeichnis des Benutzers feststellen möchte, sollte den Wert von \fBHOME\fP (anstatt des Wertes \fIgetpwuid(getuid())\->pw_dir\fP) kontrollieren, da dies dem Benutzer erlaubt, seine Vorstellung von »das Home\-Verzeichnis« während einer Anmeldesitzung zu ändern. Um das (anfängliche) Home\-Verzeichnis eines anderen Benutzers festzustellen, ist es nötig \fIgetpwnam(»Benutzername«)\->pw_dir\fP oder ähnliches zu benutzen. .SH BEISPIELE Das folgende Programm demonstriert den Gebrauch von \fBgetpwnam_r\fP(), um den volständigen Benutzernamen und die Benutzerkennung für den als Befehlszeilenargument angegebenen Benutzernamen herauszufinden. .PP .\" SRC BEGIN (getpwnam.c) .EX #include #include #include #include #include #include \& int main(int argc, char *argv[]) { struct passwd pwd; struct passwd *result; char *buf; long bufsize; int s; \& if (argc != 2) { fprintf(stderr, "Usage: %s username\en", argv[0]); exit(EXIT_FAILURE); } \& bufsize = sysconf(_SC_GETPW_R_SIZE_MAX); if (bufsize == \-1) /* Wert war unklar */ bufsize = 16384; /* Sollte mehr als genug sein */ \& buf = malloc(bufsize); if (buf == NULL) { perror("malloc"); exit(EXIT_FAILURE); } \& s = getpwnam_r(argv[1], &pwd, buf, bufsize, &result); if (result == NULL) { if (s == 0) printf("Not found\en"); else { errno = s; perror("getpwnam_r"); } exit(EXIT_FAILURE); } \& printf("Name: %s; UID: %jd\en", pwd.pw_gecos, (intmax_t) pwd.pw_uid); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "SIEHE AUCH" \fBendpwent\fP(3), \fBfgetpwent\fP(3), \fBgetgrnam\fP(3), \fBgetpw\fP(3), \fBgetpwent\fP(3), \fBgetspnam\fP(3), \fBputpwent\fP(3), \fBsetpwent\fP(3), \fBnsswitch.conf\fP(5), \fBpasswd\fP(5) .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze , Chris Leick und Mario Blättermann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .