Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

endpwent, getpwent, setpwent - Benutzerkatalog verwalten

&pagelevel(4)&pagelevel

Definition

#include <pwd.h>

void endpwent (void);

struct passwd *getpwent (void);

void setpwent (void);

Beschreibung

getpwent() gibt einen Zeiger auf ein Objekt mit nachstehender Struktur zurück, die die einzelnen Felder einer Zeile der Datei /etc/passwd enthält. Jede Zeile enthält ein Objekt der Struktur passwd (Kennwort-Struktur), die in der Include-Datei pwd.h deklariert ist, mit folgenden Elementen:

struct passwd {
      char    *pw_name;
      char    *pw_passwd;
      uid_t    pw_uid;
      gid_t    pw_gid;
      char    *pw_age;
      char    *pw_comment;
      char    *pw_gecos;
      char    *pw_dir;
      char    *pw_shell; 
};

Die Komponenten dieser Struktur werden aus dem Benutzerkatalog seriell gelesen.getpwent() gibt beim ersten Aufruf einen Zeiger auf die erste Kennwort-Struktur im Benutzerkatalog zurück; danach gibt es einen Zeiger auf die nächste Kennwort-Struktur in der Datei zurück. Auf diese Weise können aufeinander folgende Aufrufe zum Absuchen des gesamten Benutzerkatalogs verwendet werden.

setpwent() löscht den Zeiger, mit dem der Benutzerkatalog durch getpwent() seriell durchsucht werden soll. Ein Darauf folgender getpwent-Aufruf gibt einen Zeiger auf die erste Kennwort-Struktur zurück.

endpwent() kann am Ende der Verarbeitung aufgerufen werden, um den Benutzerkatalog zu schließen.

endpwent(), getpwent() und setpwent() sind nicht threadsicher.

Returnwert

getpwent():

Zeiger auf eine Struktur vom Typ passwd



bei Erfolg.

 

Nullzeiger

bei EOF und bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

endpwent() schlägt fehl, wenn gilt:


EACCES

Die Benutzernummer (uid) des Aufrufers ist ungültig.


getpwent(), setpwent() und endpwent() schlagen fehl, wenn gilt:

 

EFAULT

Fehler beim Anlegen der passwd-Struktur.

 

ENOENT

Benutzer existiert nicht.

Hinweise

Der Returnwert von getpwent() kann in einen Bereich zeigen, der von einem nachfolgenden Aufruf von getpwuid(), getpwnam() oder getpwent() überschrieben wird.

Eine Kennwortdatei /etc/passwd gibt es im POSIX-Subsystem nicht. Die Benutzerdaten werden intern im Benutzerkatalog hinterlegt (siehe Handbuch „POSIX-Grundlagen“ [1]).

Diese Funktionen werden nur noch aus Kompatibilitätsgründen unterstützt.

Die Merkmale eines aktuellen Prozesses können wie folgt festgestellt werden:

  • getpwuid(geteuid()) gibt den Namen der effektiven Benutzernummer des Prozesses zurück.

  • getlogin() gibt die Benutzerkennung des Prozesses zurück.

  • getpwuid(getuid()) gibt den Namen der realen Benutzernummer des Prozesses zurück.

Wenn Fehlersituationen untersucht werden sollen, muss errno vor dem Aufruf von getpwent() auf 0 gesetzt werden.

Siehe auch

Siehe auch endgrent(), getlogin(), getpwnam(), getpwuid(), putpwent(), pwd.h, Handbuch "POSIX-Grundlagen“ [1].