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

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

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

DESCRIPTION

       La fonction getlogin() renvoie un pointeur sur une chaîne de caractères
       contenant le nom de l’utilisateur connecté sur le  terminal  contrôlant
       le  processus,  ou  un  pointeur  NULL  si  cette information n’est pas
       disponible. La chaîne est allouée de manière statique et peut donc être
       écrasée lors des appels ultérieurs à getlogin() ou à cuserid().

       getlogin_r()  renvoie  le même nom d’utilisateur dans le tableau buf de
       taille bufsize.

       La fonction cuserid() renvoie un pointeur sur une chaîne de  caractères
       contenant   le  nom  de  l’utilisateur  associé  à  l’UID  effectif  du
       processus. Si string n’est pas un pointeur NULL, ce doit être une table
       contenant  au moins L_cuserid caractères. La chaîne sera alors renvoyée
       dans cette table. Sinon (si string vaut  NULL),  un  pointeur  sur  une
       chaîne  allouée  statiquement  sera  renvoyé.  Cette  chaîne  peut être
       écrasée par des appels ultérieurs à getlogin().

       La constante symbolique L_cuserid est un entier déclaré dans <stdio.h>,
       indiquant la longueur nécessaire pour stocker un nom d’utilisateur.

       Ces  fonctions  permettent  d’identifier correctement l’utilisateur qui
       exécute le  programme  (cuserid()),  ou  l’utilisateur  connecté  à  la
       session  (getlogin()).  Ces  deux  éléments  peuvent différer si le bit
       Set-UID du programme est validé.

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

VALEUR RENVOYÉE

       getlogin()  renvoie  un  pointeur  sur  le nom de l’utilisateur si elle
       réussit, et NULL si elle échoue. getlogin_r() renvoie 0 si elle réussit
       et une valeur non nulle si elle échoue.

ERREURS

       POSIX spécifie

       EMFILE Le  processus  appelant  a  déjà  le  nombre maximal autorisé de
              fichiers ouverts.

       ENFILE Le système  a  déjà  le  nombre  maximal  autorisé  de  fichiers
              ouverts.

       ENXIO  Le processus appelant n’a pas de terminal (tty) contrôlant.

       ERANGE (getlogin_r)   La  longueur du nom d’utilisateur, en incluant le
              caractère NUL final, est plus grande que bufsize.

       Linux/glibc a aussi les erreurs :

       ENOENT Il n’y a pas d’entrée correspondante dans le fichier utmp.

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

FICHIERS

       /etc/passwd    Base de données des mots de passe.
       /var/run/utmp (traditionnellement /etc/utmp ;
                     certaines versions de la libc utilisent /var/adm/utmp)

CONFORMITÉ À

       getlogin() et getlogin_r() sont spécifiées dans POSIX.1-2001.

       Système V dispose d’une  fonction  cuserid()  qui  utilise  l’UID  réel
       plutôt  que l’UID effectif. La fonction cuserid() a été incorporée dans
       la version POSIX de 1988, mais supprimée de la version  de  1990.  Elle
       était présente dans SUSv2, mais elle a été supprimée de POSIX.1-2001.

       OpenBSD  a  getlogin() et setlogin(), et un nom d’utilisateur associé à
       une session, même s’il n’a pas de terminal de contrôle.

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  caractères du nom. L’utilisateur connecté sur le
       terminal de contrôle d’un programme n’est pas nécessairement celui  qui
       a lancé le programme. Évitez getlogin() pour des problèmes de sécurité.

       Veuillez noter que la glibc ne  suit  pas  la  spécification  POSIX  et
       utilise  stdin  au  lieu  de  /dev/tty.  Un  bogue (les autres systèmes
       récents,  comme  SunOS 5.8,  HP-UX 11.11   et   FreeBSD 4.8   renvoient
       l’identifiant de connexion même si stdin est redirigée).

       Personne  ne sait précisément ce que fait cuserid(). Évitez-le dans des
       programmes   portables.   Évitez-le   de   toute   manière.    Utilisez
       getpwuid(geteuid())  à  la place si vous en avez besoin. N’UTILISEZ PAS
       cuserid().

VOIR AUSSI

       geteuid(2), getuid(2)

TRADUCTION

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 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> ».