Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
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 fonctionnalites pour 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 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().
getlogin_r() renvoie le meme nom d'utilisateur dans le tableau buf de
taille bufsize.
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 getlogin().
La constante symbolique L_cuserid est un entier indiquant la longueur
necessaire pour stocker un nom d'utilisateur. L_cuserid est declaree
dans <stdio.h>.
Ces fonctions permettent d'identifier correctement l'utilisateur qui
execute le programme (cuserid()), ou l'utilisateur connecte a la
session (getlogin()). Ces deux elements peuvent differer si le bit
Set-UID du programme est valide.
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.
VALEUR RENVOY'EE
getlogin() renvoie un pointeur sur le nom de l'utilisateur si elle
reussit, et NULL si elle echoue. getlogin_r() renvoie 0 si elle reussit
et une valeur non nulle si elle echoue.
ERREURS
POSIX specifie
EMFILE Le processus appelant a deja le nombre maximal autorise de
fichiers ouverts.
ENFILE Le systeme a deja le nombre maximal autorise de fichiers
ouverts.
ENXIO Le processus appelant n'a pas de terminal (tty) controlant.
ERANGE (getlogin_r) La longueur du nom d'utilisateur, en incluant le
caractere NUL final, est plus grande que bufsize.
Linux/glibc a aussi les erreurs :
ENOENT Il n'y a pas d'entree correspondante dans le fichier utmp.
ENOMEM Pas assez de memoire pour allouer la structure passwd.
ENOTTY L'entree standard ne fait pas reference a un terminal (voir
BOGUES).
FICHIERS
/etc/passwd
Fichier de base de donnees des mots de passe
/var/run/utmp
(traditionnellement /etc/utmp ; certaines versions de la libc
utilisent /var/adm/utmp)
CONFORMIT'E
getlogin() et getlogin_r() sont specifiees dans POSIX.1-2001.
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. Elle etait
presente dans SUSv2, mais elle a ete supprimee de POSIX.1-2001.
OpenBSD a getlogin() et setlogin(), et un nom d'utilisateur associe a
une session, meme s'il n'a pas de terminal de controle.
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 caracteres du nom. L'utilisateur connecte sur le
terminal de controle d'un programme n'est pas necessairement celui qui
a lance le programme. Evitez getlogin() pour des problemes de securite.
Veuillez noter que la glibc ne suit pas la specification POSIX et
utilise stdin au lieu de /dev/tty. Un bogue (les autres systemes
recents, comme SunOS 5.8, HP-UX 11.11 et FreeBSD 4.8 renvoient
l'identifiant de connexion meme si stdin est redirigee).
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), utmp(5)
COLOPHON
Cette page fait partie de la publication 3.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Florentin
Duneau et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.