Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       getlogin, getlogin_r, cuserid - Obtenir le nom de l'utilisateur

SYNOPSIS

       #include <unistd.h>

       char *getlogin(void);
       int getlogin_r(char *buf, size_t bufsize);

       #include <stdio.h>

       char *cuserid(char *string);

   Exigences  de  macros  de  test de fonctionnalites pour la glibc (consultez
   feature_test_macros(7)) :

       getlogin_r() : _REENTRANT || _POSIX_C_SOURCE >= 199506L
       cuserid() : _XOPEN_SOURCE

DESCRIPTION

       La fonction getlogin() renvoie un pointeur sur une chaine de caracteres
       contenant  le  nom de l'utilisateur connecte sur le terminal controlant
       le processus, ou un  pointeur  NULL  si  cette  information  n'est  pas
       disponible. La chaine est allouee de maniere statique et peut donc etre
       ecrasee lors des appels ulterieurs a getlogin() ou a cuserid().

       getlogin_r() renvoie le meme nom d'utilisateur dans le tableau  buf  de
       taille bufsize.

       La  fonction cuserid() renvoie un pointeur sur une chaine de caracteres
       contenant  le  nom  de  l'utilisateur  associe  a  l'UID  effectif   du
       processus. Si string n'est pas un pointeur NULL, ce doit etre une table
       contenant au moins L_cuserid caracteres. La chaine sera alors  renvoyee
       dans  cette  table.  Sinon  (si  string vaut NULL), un pointeur sur une
       chaine allouee  statiquement  sera  renvoye.  Cette  chaine  peut  etre
       ecrasee par des appels ulterieurs a getlogin().

       La  constante  symbolique L_cuserid est un entier indiquant la longueur
       necessaire pour stocker un nom d'utilisateur.  L_cuserid  est  declaree
       dans <stdio.h>.

       Ces  fonctions  permettent  d'identifier correctement l'utilisateur qui
       execute le  programme  (cuserid()),  ou  l'utilisateur  connecte  a  la
       session  (getlogin()).  Ces  deux  elements  peuvent differer si le bit
       Set-UID du programme est valide.

       La  plupart  du  temps,  il  est  plus  utile  d'utiliser  la  variable
       d'environnement  LOGNAME  pour  determiner l'utilisateur. Ceci est plus
       flexible  car  il  est   justement   possible   de   modifier   LOGNAME
       arbitrairement.

VALEUR RENVOY'EE

       getlogin()  renvoie  un  pointeur  sur  le nom de l'utilisateur si elle
       reussit, et NULL si elle echoue. getlogin_r() renvoie 0 si elle reussit
       et une valeur non nulle si elle echoue.

ERREURS

       POSIX specifie

       EMFILE Le  processus  appelant  a  deja  le  nombre maximal autorise de
              fichiers ouverts.

       ENFILE Le systeme  a  deja  le  nombre  maximal  autorise  de  fichiers
              ouverts.

       ENXIO  Le processus appelant n'a pas de terminal (tty) controlant.

       ERANGE (getlogin_r)   La  longueur du nom d'utilisateur, en incluant le
              caractere NUL final, est plus grande que bufsize.

       Linux/glibc a aussi les erreurs :

       ENOENT Il n'y a pas d'entree correspondante dans le fichier utmp.

       ENOMEM Pas assez de memoire pour allouer la structure passwd.

       ENOTTY L'entree standard ne fait pas  reference  a  un  terminal  (voir
              BOGUES).

FICHIERS

       /etc/passwd
              Fichier de base de donnees des mots de passe

       /var/run/utmp
              (traditionnellement  /etc/utmp ;  certaines  versions de la libc
              utilisent /var/adm/utmp)

CONFORMIT'E

       getlogin() et getlogin_r() sont specifiees dans POSIX.1-2001.

       System V dispose d'une fonction cuserid() qui utilise l'UID reel plutot
       que  l'UID  effectif.  La  fonction  cuserid() a ete incorporee dans la
       version POSIX de 1988, mais supprimee de la version de 1990. Elle etait
       presente dans SUSv2, mais elle a ete supprimee de POSIX.1-2001.

       OpenBSD  a  getlogin() et setlogin(), et un nom d'utilisateur associe a
       une session, meme s'il n'a pas de terminal de controle.

BOGUES

       Malheureusement, il est souvent assez  facile  de  tromper  getlogin().
       Parfois,   il  ne  fonctionne  pas  du  tout  car  certains  programmes
       n'utilisent pas le fichier utmp correctement. Souvent, il  ne  retourne
       que  les  8  premiers  caracteres du nom. L'utilisateur connecte sur le
       terminal de controle d'un programme n'est pas necessairement celui  qui
       a lance le programme. Evitez getlogin() pour des problemes de securite.

       Veuillez  noter  que  la  glibc  ne  suit pas la specification POSIX et
       utilise stdin au lieu  de  /dev/tty.  Un  bogue  (les  autres  systemes
       recents,   comme   SunOS 5.8,   HP-UX 11.11  et  FreeBSD 4.8  renvoient
       l'identifiant de connexion meme si stdin est redirigee).

       Personne ne sait precisement ce que fait cuserid(). Evitez-le dans  des
       programmes    portables.   Evitez-le   de   toute   maniere.   Utilisez
       getpwuid(geteuid()) a la place si vous en avez besoin.  N'utilisez  pas
       cuserid().

VOIR AUSSI

       geteuid(2), getuid(2), utmp(5)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis 2010, cette traduction est maintenue a l'aide  de  l'outil  po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   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'equipe francophone de traduction de Debian (2006-2009).

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

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.