Loading

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  fonctionnalités  pour  la  glibc (voir
   feature_test_macros(7)) :

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

       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.

       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)

CONFORMITÉ

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

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

VOIR AUSSI

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

COLOPHON

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