Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       getpwnam, getpwnam_r, getpwuid, getpwuid_r - Lire un enregistrement du fichier des mots de
       passe

SYNOPSIS

       #include <sys/types.h>
       #include <pwd.h>

       struct passwd *getpwnam(const char *name);

       struct passwd *getpwuid(uid_t uid);

       int getpwnam_r(const char *name, struct passwd *pwd,
                   char *buf, size_t buflen, struct passwd **result);

       int getpwuid_r(uid_t uid, struct passwd *pwd,
                   char *buf, size_t buflen, struct passwd **result);

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

       getpwnam_r(), getpwuid_r() :
           _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE || _POSIX_SOURCE

DESCRIPTION

       La  fonction  getpwnam() renvoie un pointeur sur une structure contenant les divers champs
       de l'enregistrement de la base de données des mots de  passe  (par  exemple,  la  base  de
       données locale /etc/passwd, NIS ou LDAP) correspondant au nom d'utilisateur name.

       La  fonction  getpwuid() renvoie un pointeur sur une structure contenant les divers champs
       de l'enregistrement de la  base  de  données  des  mots  de  passe  correspondant  à  l'ID
       utilisateur uid.

       La structure passwd est définie dans <pwd.h> comme ceci :

           struct passwd {
               char   *pw_name;       /* Nom d'utilisateur */
               char   *pw_passwd;     /* Mot de passe de l'utilisateur */
               uid_t   pw_uid;        /* ID de l'utilisateur */
               gid_t   pw_gid;        /* ID du groupe */
               char   *pw_gecos;      /* Information utilisateur */
               char   *pw_dir;        /* Répertoire personnel */
               char   *pw_shell;      /* Interpréteur de commande */
           };

       Consultez passwd(5) pour plus d'informations sur ces champs.

       Les  fonctions  getpwnam_r()  et  getpwuid_r()  fournissent  les  mêmes  informations  que
       getpwnam() et getpwuid() mais enregistrent  la  structure  passwd  trouvée  dans  l'espace
       pointé  par  pwd.  Cette structure passwd contient des pointeurs vers des chaînes qui sont
       enregistrées dans le tampon buf de taille buflen. Un pointeur vers le résultat (en cas  de
       succès) ou NULL (au cas où aucune entrée n'ait été trouvée ou qu'une erreur soit survenue)
       est enregistré dans *result.

       La taille maximale nécessaire pour buf peut être récupérée en utilisant sysconf(3) avec le
       paramètre _SC_GETPW_R_SIZE_MAX.

VALEUR RENVOYÉE

       Les  fonctions getpwnam() et getpwuid() renvoient un pointeur sur une structure passwd, ou
       NULL si une erreur se produit, ou si l'enregistrement correspondant n'est pas  trouvé.  En
       cas  d'erreur,  errno  est positionnée en conséquence. Si on souhaite vérifier errno après
       l'appel, celle-ci devrait être positionnée à zéro avant l'appel.

       La valeur de retour peut pointer vers une zone statique  et  donc  être  écrasée  par  des
       appels  successifs  à  getpwent(3),  getpwnam()  ou getpwuid(). (Ne pas passer le pointeur
       renvoyé à free(3).)

       En cas de succès, getpwnam_r() et getpwuid_r() renvoient zéro  et  définissent  *result  à
       pwd. Si aucun mot de passe ne correspond, ces fonctions renvoient 0 et définissent *result
       à NULL. En cas d'erreur, un code d'erreur est renvoyé et *result et définit à NULL.

ERREURS

       0 ou ENOENT ou ESRCH ou EBADF ou EPERM ou ...
              Le nom name ou l'identifiant uid n'ont pas été trouvés.

       EINTR  Un signal a été intercepté.

       EIO    Erreur d'entrée-sortie.

       EMFILE Le nombre maximal (OPEN_MAX) de fichiers ouverts par le processus est atteint.

       ENFILE Le nombre maximal de fichiers ouverts sur le système est atteint.

       ENOMEM Pas assez de mémoire pour allouer la structure passwd.

       ERANGE L'espace tampon fourni est insuffisant.

NOTE

       La base de données des mots de passe utilisateur est  la  plupart  du  temps  /etc/passwd.
       Cependant,  sur  les  systèmes  récents,  elle  peut faire référence à une base de données
       réseau NIS, LDAP et les autres fichiers locaux sont configurés dans /etc/nsswitch.conf.

FICHIERS

       /etc/passwd
              Base de données des mots de passe locaux

       /etc/nsswitch.conf
              Fichier de configuration des base de données système et des  options  des  noms  de
              services

CONFORMITÉ

       SVr4,  4.3BSD,  POSIX.1-2001. Le champ pw_gecos n'est pas spécifié dans POSIX, mais il est
       présent sur la plupart des implémentations.

NOTES

       La description "VALEUR RENVOYÉE" ci-dessus vient de POSIX.1-2001. Elle ne considère pas le
       cas  « non  trouvé »  comme une erreur, et ne spécifie pas errno dans ce cas. Cela rend la
       détection d'erreur impossible. On peut dire que, d'après POSIX, errno est  inchangée  dans
       le  cas  où aucune entrée n'est trouvée. Des essais sur de nombreux systèmes UNIX ont fait
       apparaître différentes valeurs dans ce cas : 0, ENOENT, EBADF, ESRCH,  EWOULDBLOCK,  EPERM
       et probablement d'autres.

       Le  champ  pw_dir  contient  le nom du répertoire de travail initial de l'utilisateur. Les
       programmes de connexion (« login »)  utilisent  ce  champ  pour  initialiser  la  variable
       d'environnement  HOME  pour  les  interpréteurs de commandes initiaux. Une application qui
       souhaite déterminer le répertoire personnel des utilisateurs devrait  lire  la  valeur  de
       HOME  (au  lieu  de  la  valeur  de  getpwuid(getuid())->pw_dir) puisque que ceci permet à
       l'utilisateur de modifier  « son  répertoire  personnel »  lorsqu'il  est  connecté.  Pour
       déterminer  le  répertoire personnel « initial » d'un autre utilisateur, il est nécessaire
       d'utiliser getpwnam("utilisateur")->pw_dir ou un équivalent.

EXEMPLE

       Le programme suivant est un exemple d'utilisation de  getpwnam_r()  pour  trouver  le  nom
       complet et l'identifiant du nom d'utilisateur fourni en paramètre.

       #include <pwd.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>
       #include <errno.h>

       int
       main(int argc, char *argv[])
       {
           struct passwd pwd;
           struct passwd *result;
           char *buf;
           size_t bufsize;
           int s;

           if (argc != 2) {
               fprintf(stderr, "Usage: %s username\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           bufsize = sysconf(_SC_GETPW_R_SIZE_MAX);
           if (bufsize == -1)          /* Value was indeterminate */
               bufsize = 16384;        /* Should be more than enough */

           buf = malloc(bufsize);
           if (buf == NULL) {
               perror("malloc");
               exit(EXIT_FAILURE);
           }

           s = getpwnam_r(argv[1], &pwd, buf, bufsize, &result);
           if (result == NULL) {
               if (s == 0)
                   printf("Not found\n");
               else {
                   errno = s;
                   perror("getpwnam_r");
               }
               exit(EXIT_FAILURE);
           }

           printf("Name: %s; UID: %ld\n", pwd.pw_gecos, (long) pwd.pw_uid);
           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       endpwent(3),  fgetpwent(3),  getgrnam(3), getpw(3), getpwent(3), getspnam(3), putpwent(3),
       setpwent(3), nsswitch.conf(5), passwd(5)

COLOPHON

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

TRADUCTION

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <URL:http://po4a.alioth.debian.org/>  par  l'équipe  de  traduction francophone au sein du
       projet perkamon <URL:http://perkamon.alioth.debian.org/>.

       Christophe  Blaess  <URL:http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <URL:http://manpagesfr.free.fr/>  (2003-2006). Florentin Duneau et l'équipe francophone de
       traduction de Debian (2006-2009).

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