GETLOGIN(3)

NOM
getlogin, cuserid - Obtenir le nom de l'utilisateur.

SYNOPSIS
#include <unistd.h>

char *getlogin (void);

#include <stdio.h>

char *cuserid (char *string);

DESCRIPTION
La fonction getlogin renvoie un pointeur sur une chaine de caracteres contenant le nom de l'utilisateur connecte sur le terminal controlant le processus, ou un pointeur NULL si cette information n'est pas disponible. La chaine est allouee de maniere statique et peut donc etre ecrasee lors des appels ulterieurs a getlogin ou a cuserid.

La fonction cuserid renvoie un pointeur sur une chaine de caracteres contenant le nom de l'utilisateur associe a l'UID effectif du processus. Si string n'est pas un pointeur NULL, ce doit etre une table contenant au moins L_cuserid caracteres. La chaine sera alors renvoyee dans cette table. Sinon (si string vaut NULL), un pointeur sur une chaine allouee statiquement sera renvoye. Cette chaine peut etre ecrasee par des appels ulterieurs a cuserid ou a getlogin.

La constante symbolique L_cuserid est un entier declare dans stdio.h, indiquant la longueur necessaire pour stocker un nom d'utilisateur.

Ces fonctions permettent d'identifier correctement l'utilisateur qui execute le programme (cuserid) ou l'utilisateur connecte pour la session (getlogin). (Ces deux elements peuvent differer si le bit Set-UID du programme est valide). L'utilisateur n'a pas le moyen de modifier ces donnees.

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

ERREURS

ENOMEM
    Pas assez de memoire pour allouer la structure passwd necessaire.

FICHIERS
/etc/passwd    Base de donnees des mots de passe.
/etc/utmp (ou /var/adm/utmp, ou n'importe quel endroit ou se trouve utmp - Le chemin d'acces depend de la version de libc).

CONFORME A
POSIX.1. System V dispose d'une fonction cuserid qui utilise l'UID reel plutot que l'UID effectif. La fonction cuserid a ete incorporee dans la version POSIX de 1988, mais supprimee de la version de 1990.

BUGS
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 caracteres du nom. L'utilisateur connecte sur le terminal de controle d'un programme n'est pas necessairement celui qui a lance le programme.

Personne ne sait precisement ce que fait cuserid(). Evitez-le dans des programmes portables. Evitez-le de toute maniere. Utilisez getpwuid(geteuid()) a la place si vous en avez besoin. N'UTILISEZ PAS cuserid().

VOIR AUSSI
geteuid(2), getuid(2)