Provided by: manpages-fr_1.67.0-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);

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 à cuserid ou à 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é  pour  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

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

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

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

       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 :

       ENOMEM Mémoire  insuffisante   pour   allouer   la   structure   passwd
              nécessaire.

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

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) ou se trouve utmp  -  Le  chemin  d’accès
       dépend de la version de libc).

CONFORMITÉ

       POSIX.1. 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.

       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, HPUX 11.11 et FreeBSD 4.8 renvoient  tous  le
       nom de connexion même si stdin est redirigée.)

       Personne  ne sait précisement 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

       Christophe Blaess, 1996-2003.