Provided by: manpages-fr_1.67.0-1_all bug

NOM

       getspnam,   getspnam_r,   getspent,   getspent_r,  setspent,  endspent,
       fgetspent,  fgetspent_r,  sgetspent,  sgetspent_r,  putspent,  lckpwdf,
       ulckpwdf  -  Obtenir  un  enregistrement  du  fichier des mots de passe
       cachés

SYNOPSIS

       /* API du fichier des mots de passe cachés */
       #include <shadow.h>

       struct spwd *getspnam(const char *name);

       struct spwd *getspent(void);

       void setspent(void);

       void endspent(void);

       struct spwd *fgetspent(FILE *fp);

       struct spwd *sgetspent(const char *s);

       int putspent(struct spwd *p, FILE *fp);

       int lckpwdf(void);

       int ulckpwdf(void);

       /* Extension GNU */
       #define _SVID_SOURCE    /* ou _BSD_SOURCE */
       #include <shadow.h>

       int getspent_r(struct spwd *spbuf,
               char *buf, size_t buflen, struct spwd **spbufp);

       int getspnam_r(const char *name, struct spwd *spbuf,
               char *buf, size_t buflen, struct spwd **spbufp);

       int fgetspent_r(FILE *fp, struct spwd *spbuf,
               char *buf, size_t buflen, struct spwd **spbufp);

       int sgetspent_r(const char *s, struct spwd *spbuf,
               char *buf, size_t buflen, struct spwd **spbufp);

DESCRIPTION

       Il a longtemps été considéré  comme  sûr  d’avoir  des  mots  de  passe
       chiffrés  ouvertement  visibles  dans  le  fichier  des  mots de passe.
       Lorsque les ordinateurs sont devenus plus rapides et que les gens  sont
       devenus  plus  conscients  des problèmes de sécurité, cela n’était plus
       acceptable.  Julianne Frances Haugh a implémenté la suite d’utilitaires
       « shadow »  qui  conserve  les  mots  de passe chiffrés dans le fichier
       /etc/shadow, lisible seulement par l’administrateur (root).

       Les routines d’accès décrites plus loin ressemblent à celles concernant
       le fichier /etc/passwd.  Cette configuration des mots de passe cachés a
       été supplantée  par  PAM  (pluggable  authentication  modules),  et  le
       fichier /etc/nsswitch.conf décrit à présent les sources à utiliser.

       La  fonction getspnam() renvoie un pointeur sur une structure contenant
       une partie des champs d’une ligne extraite de /etc/shadow pour l’entrée
       correspondant à l’utilisateur de nom name.

       La  fonction  getspent()  renvoie  un pointeur sur l’entrée suivante du
       fichier des mots de passe cachés.  La position dans  le  flux  d’entrée
       est  initialisée  par setspent().  Lorsque la lecture est effectuée, le
       programme devrait appeler endspent() pour désallouer les ressources.

       La fonction fgetspent() est similaire à getspent() mais utilise le flux
       fourni plutôt que celui implicitement ouvert par setspent().

       La  fonction  sgetspent() analyse la chaîne s fournie dans la structure
       spwd.

       La fonction putspent() écrit le contenu de la structure spwd *p fournie
       sous  forme d’une ligne de texte au format du fichier des mots de passe
       cachés dans le flux fp.  Les entrées chaînes  de  valeur  NULL  et  les
       entrées numériques de valeur -1 sont écrites comme des chaînes vides.

       La fonction lckpwdf() a pour but de protéger contre les accès multiples
       à la base de données des mots de passe cachés. Elle tente d’obtenir  un
       verrou,  renvoie 0 si elle y arrive ou -1 si elle échoue (le verrou n’a
       pas pu être obtenu dans  les  15  secondes).   La  fonction  ulckpwdf()
       libère  le verrou.  Veuillez noter qu’il n’y a pas de protection contre
       l’accès  direct  au  fichier  des  mots  de  passe  cachés.  Seuls  les
       programmes qui utilisent lckpwdf() remarqueront le verrou.

       C’étaient  les  routines qui composaient l’API originale shadow.  Elles
       sont largement disponibles.

   Versions réentrantes
       De manière analogue aux routines réentrantes pour le fichier  password,
       la   GlibC   a   aussi  ici  des  versions  réentrantes.   La  fonction
       getspnam_r() est  comme  la  fonction  getspnam()  mais  enregistre  la
       structure  passwd cachée trouvée dans l’espace pointé par spbuf.  Cette
       structure passwd cachée contient des pointeurs  vers  des  chaînes  qui
       sont stockées dans le tampon buf de taille buflen.  Un pointeur vers le
       résultat (en cas de réussite) ou NULL (au cas où aucune entrée n’a  été
       trouvée ou qu’une erreur soit survenue) est stocké dans *spbufp.

       Les   fonctions  getspent_r(),  fgetspent_r(),  et  sgetspent_r()  sont
       analogues.

       Certains systèmes non-GlibC ont également  des  fonctions  portant  ces
       noms, souvent avec des prototypes différents.

   Structure
       La  structure  passwd  cachée est définie dans <shadow.h> de la manière
       suivante :

       struct spwd {
           char *sp_namp;         /* Nom de connexion */
           char *sp_pwdp;         /* Mot de passe chiffré */
           long sp_lstchg;        /* Date de dernière modification */
           long sp_min;           /* Nombre de jours minimun entre
                                     deux modifications */
           long sp_max;           /* Nombre de jours maximun entre
                                     deux modifications */
           long sp_warn;          /* Nombre de jours avant l’expiration
                                     du mot de passe pour avertir
                                     l’utilisateur de le modifier */
           long sp_inact;         /* Nombre de jours après l’expiration
                                     du mot de passe pour la désactivation
                                     du compte */
           long sp_expire;        /* Nombre de jours depuis le 1er janvier 1970
                                     avant que le compte ne soit désactivé */
           unsigned long sp_flag; /* Réservé */
       };

VALEUR RENVOYÉE

       Ces routines renvoient NULL s’il n’y a plus d’entrée disponible  ou  si
       une erreur est survenue pendant le traitement.  Les routines qui ont un
       int comme valeur de retour renvoient 0 en cas de réussite et -1 en  cas
       d’échec.

       Pour  les  fonctions  non réentrantes, la valeur de retour peut pointer
       sur une zone statique et peut être écrasée par des  appels  consécutifs
       de ces fonctions.

       Les fonctions réentrantes renvoient zéro si elles réussissent. Si elles
       échouent, une valeur d’erreur est renvoyée.

ERREURS

       ERANGE Le tampon fourni est trop petit.

FICHIERS

       /etc/shadow
              fichier base de données des mots de passe cachés

       /etc/.pwd.lock
              fichier verrou

       Le fichier d’inclusion  <paths.h>  définit  la  constante  _PATH_SHADOW
       comme étant le chemin du fichier des mots de passe cachés.

CONFORMITÉ

       La base de données des mots de passe cachés et son API associée ne sont
       pas
              spécifiées   par   POSIX.1-2001.  Toutefois,  beaucoup  d’autres
              systèmes fournissent une API similaire.

VOIR AUSSI

       getpwnam(3), getpwnam_r(3), getgrnam(3), shadow(5)

TRADUCTION

       Ce document est une traduction réalisée par Alain  Portal  <aportal  AT
       univ-montp2 DOT fr> le 8 juillet 2005 et révisée le 14 décembre 2005.

       L’équipe  de  traduction a fait le maximum pour réaliser une adaptation
       française de qualité. La version anglaise la plus à jour de ce document
       est  toujours consultable via la commande : « LANG=en man 3 getspnam ».
       N’hésitez pas à signaler à l’auteur ou au  traducteur,  selon  le  cas,
       toute erreur dans cette page de manuel.