Provided by: manpages-fr-dev_4.19.0-7_all bug

NOM

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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <unistd.h>

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

       #include <stdio.h>

       char *cuserid(char *string);

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

       getlogin_r() :
           _POSIX_C_SOURCE >= 199506L

       cuserid() :
           Depuis la glibc 2.24 :
               (_XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
                   || _GNU_SOURCE
           Pour la glibc antérieure et égale à 2.23 :
               _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. En cas
       d'échec, NULL est renvoyé et errno est défini pour indiquer l'erreur. getlogin_r() renvoie
       0 si elle réussit et une valeur non nulle si elle échoue.

ERREURS

       POSIX spécifie :

       EMFILE La limite du nombre de descripteurs de fichiers par processus a été atteinte.

       ENFILE La  limite  du  nombre  total  de  fichiers  ouverts  pour  le système entier a été
              atteinte.

       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 NULL final
              (« \0 »), 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.

       ENOTTY L'entrée standard ne fait pas référence à un terminal (voir BOGUES).

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)

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌─────────────┬──────────────────────┬────────────────────────────────────────────────────┐
       │InterfaceAttributValeur                                             │
       ├─────────────┼──────────────────────┼────────────────────────────────────────────────────┤
       │getlogin()   │ Sécurité des threads │ MT-Unsafe race:getlogin race:utent sig:ALRM timer  │
       │             │                      │ locale                                             │
       ├─────────────┼──────────────────────┼────────────────────────────────────────────────────┤
       │getlogin_r() │ Sécurité des threads │ MT-Unsafe race:utent sig:ALRM timer locale         │
       ├─────────────┼──────────────────────┼────────────────────────────────────────────────────┤
       │cuserid()    │ Sécurité des threads │ MT-Unsafe race:cuserid/!string locale              │
       └─────────────┴──────────────────────┴────────────────────────────────────────────────────┘
       Dans  la  table  ci-dessus,  utent  dans  race:utent  signifie  que  si  une des fonctions
       setutent(3), getutent(3) o endutent(3) est utilisée en parallèle dans  différents  threads
       d'un  programme,  des situations de compétition de données peuvent se produire. getlogin()
       et getlogin_r() appellent ces fonctions, c'est pourquoi race:utent  est  utilisé  pour  le
       rappeler aux utilisateurs.

STANDARDS

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

       System 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

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

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.