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

   Exigences  pour les macros de test de fonctionnalité de 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 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 indiquant la longueur
       nécessaire pour stocker un nom d’utilisateur.  L_cuserid  est  déclarée
       dans <stdio.h>.

       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
              Fichier de 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.  Nutilisez  pas
       cuserid().

VOIR AUSSI

       geteuid(2), getuid(2)

COLOPHON

       Cette  page  fait  partie  de  la  publication 2.80 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  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> ».