Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ getspent(3C) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

getpwent(3C)

putpwent(3C)

putspent(3C)

getspent(3C)                                                   getspent(3C)

NAME
     getspent, getspnam, lckpwdf, ulckpwdf, setspent, endspent, fgetspent -
     Eintrag der Shadow-Paßwortdatei ändern

SYNTAX
     #include <shadow.h>

     struct spwd *getspent(void);

     struct spwd *getspnam(const char *name);

     int lckpwdf(void);

     int ulckpwdf(void);

     void setspent(void);

     void endspent(void);

     struct spwd *fgetspent(FILE *fp);

BESCHREIBUNG
     Die Routinen getspent() und getspnam() liefern beide einen Zeiger auf
     ein Objekt zurück, das die Felder einer Zeile aus der Datei
     /etc/shadow enthält. Jede Zeile aus der Datei enthält eine "Shadow-
     Kennwort"-Struktur, die in der Datei shadow.h vereinbart wird:

        struct spwd{
              char    *spnamp;
              char    *sppwdp;
              long    splstchg;
              long    spmin;
              long    spmax;
              long    spwarn;
              long    spinact;
              long    spexpire;
              unsigned long   spflag;
        };

     Die Routine getspent() liefert beim ersten Aufruf einen Zeiger auf die
     erste Struktur vom Typ spwd aus der Datei zurück; danach wird der Zei-
     ger auf die nächste spwd-Struktur aus der Datei zurückgegeben; die
     komplette Datei kann somit durch aufeinanderfolgende Funktionsaufrufe
     durchsucht werden. Die Routine getspnam() sucht vom Anfang der Datei
     an, bis der Anmeldename name gefunden wird, und liefert einen Zeiger
     auf die entsprechende Struktur zurück, in der der Name gefunden wurde.
     Die Funktionen getspent() und getspnam() schreiben in die Felder
     spmin, spmax, splstchg, spwarn, spinact, spexpire oder spflag
     den Wert -1, wenn das entsprechende Feld aus der Datei /etc/shadow
     leer ist. Ist das Dateiende erreicht, tritt ein Lese- oder Formatfeh-
     ler in der Datei auf, liefern diese Funktionen einen Nullzeiger und
     setzen errno auf EINVAL.



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

getspent(3C)                                                   getspent(3C)

     /etc/.pwd.lock ist die Sperrdatei. Sie wird verwendet, um den Zugriff
     zum Ändern der Kennwortdateien /etc/passwd und /etc/shadow zu erlan-
     gen. lckpwdf() und ulckpwdf() sind Routinen, die den Änderungszugriff
     für die Kennwortdatei über die Sperrdatei erhalten. Ein Prozeß ruft
     zuerst lckpwdf() auf, um die Sperrdatei zu sperren; dadurch erhält er
     das exklusive Recht, die Dateien /etc/passwd und/oder /etc/shadow zu
     ändern. Nach Durchführung der Änderungen sollte ein Prozeß die Sperre
     der Sperrdatei über ulckpwdf() wieder aufheben. Dieser Mechanismus
     verhindert das gleichzeitige Ändern der Kennwortdateien.

     lckpwdf() versucht, die Datei /etc/.pwd.lock innerhalb von 15 Sekunden
     zu sperren. Gelingt dies nicht, weil /etc/.pwd.lock beispielsweise
     schon gesperrt ist, wird -1 zurückgeliefert. Bei erfolgreicher Durch-
     führung wird ein Wert ungleich -1 zurückgegeben.

     ulckpwdf() versucht, die Datei /etc/.pwd.lock freizugeben. Gelingt
     dies nicht, weil /etc/.pwd.lock bereits freigegeben ist, wird -1
     zurückgegeben. Bei erfolgreicher Durchführung wird 0 zurückgegeben.

     Der Aufruf der Routine setspent() verursacht das Zurückspulen der
     Shadow-Kennwortdatei; dadurch können wiederholte Suchdurchläufe ausge-
     führt werden. Die Routine endspent() wird aufgerufen, um die Shadow-
     Kennwortdatei zu schließen, nachdem die Bearbeitung beendet ist.

     Die Routine fgetspent() liefert einen Zeiger auf die nächste spwd-
     Struktur im Stream fp zurück, die dem Format von /etc/shadow ent-
     spricht.

ERGEBNIS
     getspent(), getspnam(), lckpwdf(), ulckpwdf() und fgetspent() liefern
     einen Nullzeiger bei Erreichen des Dateiendes oder bei Auftreten eines
     Fehlers.

HINWEISE
     Diese Routine ist nur zum internen Gebrauch gedacht; Kompatibilität
     wird nicht garantiert.

     Alle Daten befinden sich in einem statischen Bereich; die Daten soll-
     ten also kopiert werden, falls sie gesichert werden sollen.

DATEIEN
     /etc/shadow

     /etc/passwd

     /etc/.pwd.lock

SIEHE AUCH
     getpwent(3C), putpwent(3C), putspent(3C).





Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026