Loading

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);

   Exigences de  macros  de  test  de  fonctionnalités  pour  la  glibc  (voir
   feature_test_macros(7)) :

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

       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
                                     mesuré en jours depuis le
                                     1er janvier 1970) */
               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;    /* Date à laquelle le compte expirera
                                     (mesuré en jours depuis le
                                     1er janvier 1970) */
               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)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

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> ».