Provided by: manpages-fr-dev_2.64.1-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 */
       #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);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       getspent_r(), getspnam_r(), fgetspent_r(), sgetspent_r(): _BSD_SOURCE
       || _SVID_SOURCE

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  la  base  de
       données  des  mots  de passe cachés « shadow » (par exemple, le fichier
       local des mots de passe  cachés  /etc/shadow,  NIS  ou  LDAP),  lisible
       seulement par le superutilisateur.

       Les   fonctions   décrites   ci-dessous   ressemblent   aux   fonctions
       traditionnelles de la base de données des mots de passe  (par  exemple,
       consultez getpwnam(3) et getpwent(3)).

       La fonction getspnam() renvoie un pointeur vers une structure contenant
       les champs d’un enregistrement extrait de la base de données « shadow »
       de l’entrée correspondant à l’utilisateur de nom name.

       La  fonction getspent() renvoie un pointeur sur l’entrée suivante de la
       base de données « shadow ». La  position  dans  le  flux  d’entrée  est
       initialisée  par setspent(). Lorsque la lecture est finie, 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 la base de données des
       mots de passe cachés contre les accès simultané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 la base  de  données
       des  mots  de  passe,  la glibc possède aussi des versions ré-entrantes
       pour la  base  de  données  des  mots  de  passe  cachés.  La  fonction
       getspnam_r()  est  équivalente à la fonction getspnam() mais enregistre
       la structure des mots de passe cachés trouvée dans l’espace pointé  par
       spbuf.  Cette structure des mots de passe cachés 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’ait été trouvée ou qu’une  erreur  soit  survenue)  est
       stocké dans *spbufp.

       Les   fonctions   getspent_r(),  fgetspent_r()  et  sgetspent_r()  sont
       analogues à leurs homologues non ré-entrantes.

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

   Structure
       La structure des mots de passe cachés 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 minimum entre
                                        deux modifications */
              long sp_max;           /* Nombre de jours maximum 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 qui renvoient un pointeur 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  shadow  et  son  API ne sont pas spécifiées dans
       POSIX.1-2001. Cependant,  beaucoup  de  systèmes  fournissent  une  API
       similaire.

VOIR AUSSI

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

TRADUCTION

       Cette  page  de  manuel  a été traduite et mise à jour par Alain Portal
       <aportal AT  univ-montp2  DOT  fr>  entre  2004  et  2006,  et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».